#include <bits/stdc++.h>
using namespace std;
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
long long h, w;
cin >> h >> w;
long long p = h*w;
long long mhw = min(w, h);
int m;
cin >> m;
vector<pair<long long, long long>> D(m);
for(int i = 0; i<m; i++){
long long a;
cin >> a;
D[i] = {a*a, a};
}
long long licznik = 0;
sort(D.begin(), D.end());
for(int i = m-1; i>=0; i--){
if(D[i].second<=mhw){
long long k = p/D[i].first;
licznik+=k;
p-=(k*D[i].first);
h-=D[i].second;
w-=D[i].second;
mhw = max(h, w);
}
}
if(p==0) cout << licznik << "\n";
else cout << "-1\n";
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #include <bits/stdc++.h> using namespace std; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); long long h, w; cin >> h >> w; long long p = h*w; long long mhw = min(w, h); int m; cin >> m; vector<pair<long long, long long>> D(m); for(int i = 0; i<m; i++){ long long a; cin >> a; D[i] = {a*a, a}; } long long licznik = 0; sort(D.begin(), D.end()); for(int i = m-1; i>=0; i--){ if(D[i].second<=mhw){ long long k = p/D[i].first; licznik+=k; p-=(k*D[i].first); h-=D[i].second; w-=D[i].second; mhw = max(h, w); } } if(p==0) cout << licznik << "\n"; else cout << "-1\n"; return 0; } |
English