#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; } |