#include <bits/stdc++.h>
using namespace std;
int main(){
int a,b;
cin >> a >>b;
int poleg= a*b;
int n,wynik=0;
cin >>n;
int tab[n],polei;
for (int i = 0; i < n; ++i) {
cin >> tab[i];
}
sort(tab,tab+n,greater<int>());
for (int j = 0; j < n; ++j) {
polei = tab[j]*tab[j];
if ((poleg-polei)>0){
j--;
wynik++;
poleg-=polei;
} else {
polei= tab[j+1]*tab[j+1];
if ((poleg-polei)>0) {
wynik++;
poleg -= polei;
} else{
wynik=-1;
break;
}
}
}
cout << wynik;
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 35 | #include <bits/stdc++.h> using namespace std; int main(){ int a,b; cin >> a >>b; int poleg= a*b; int n,wynik=0; cin >>n; int tab[n],polei; for (int i = 0; i < n; ++i) { cin >> tab[i]; } sort(tab,tab+n,greater<int>()); for (int j = 0; j < n; ++j) { polei = tab[j]*tab[j]; if ((poleg-polei)>0){ j--; wynik++; poleg-=polei; } else { polei= tab[j+1]*tab[j+1]; if ((poleg-polei)>0) { wynik++; poleg -= polei; } else{ wynik=-1; break; } } } cout << wynik; return 0; } |
English