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