#include<bits/stdc++.h> using namespace std; long long rozmiary[37]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); long long w, h; cin >> w >> h; int n; cin >> n; for (int i = 0; i < n; ++i){ cin >> rozmiary[i]; } sort(rozmiary, rozmiary + n); int prawo = 0; int dol = 0; long long akt_pole = 0; long long wynik = 0; for (int i = n - 1; i >= 0; --i){ long long ile_razy_d = h/rozmiary[i]; long long ile_razy_p = w/rozmiary[i]; int minimum = min(ile_razy_d, ile_razy_p); long long ile_d = ile_razy_d * rozmiary[i]; long long ile_p = ile_razy_p * rozmiary[i]; prawo = ile_p; dol = ile_d; wynik += ((ile_p * ile_d) - akt_pole)/(rozmiary[i] * rozmiary[i]); akt_pole = (ile_p * ile_d); //cout << prawo << " " << dol << "\n"; } if (akt_pole != (w * h)){ cout << -1; return 0; } cout << wynik << "\n"; }
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 35 | #include<bits/stdc++.h> using namespace std; long long rozmiary[37]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); long long w, h; cin >> w >> h; int n; cin >> n; for (int i = 0; i < n; ++i){ cin >> rozmiary[i]; } sort(rozmiary, rozmiary + n); int prawo = 0; int dol = 0; long long akt_pole = 0; long long wynik = 0; for (int i = n - 1; i >= 0; --i){ long long ile_razy_d = h/rozmiary[i]; long long ile_razy_p = w/rozmiary[i]; int minimum = min(ile_razy_d, ile_razy_p); long long ile_d = ile_razy_d * rozmiary[i]; long long ile_p = ile_razy_p * rozmiary[i]; prawo = ile_p; dol = ile_d; wynik += ((ile_p * ile_d) - akt_pole)/(rozmiary[i] * rozmiary[i]); akt_pole = (ile_p * ile_d); //cout << prawo << " " << dol << "\n"; } if (akt_pole != (w * h)){ cout << -1; return 0; } cout << wynik << "\n"; } |