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