#include <bits/stdc++.h> using namespace std; #define speed ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0) #define pb push_back #define ll long long vector<ll>rozmiary; int main() { speed; ll wysokosc,szerokosc,iloscObrazow; cin>>wysokosc>>szerokosc>>iloscObrazow; for (ll i=0; i<iloscObrazow; i++) { ll rozmiar; cin>>rozmiar; rozmiary.pb(rozmiar); } sort(rozmiary.rbegin(),rozmiary.rend()); ll i=0,licznik=0; ll szer=szerokosc, wys=wysokosc; while (wys>0) { szer=szerokosc; if (i>=iloscObrazow) { cout<<-1; return 0; } if (rozmiary[i]>wys || rozmiary[i]>szer) { i++; continue; } if (szer>=rozmiary[i]) { ll temp=szer/rozmiary[i]; ll tempWys=wys/rozmiary[i]; licznik+=temp*tempWys; szer-=temp*rozmiary[i]; wys-=tempWys*rozmiary[i]; int najwiekszy=i; i++; while (i<iloscObrazow) { if (rozmiary[i]<=szer) { ll temp2=szer/rozmiary[i]; szer-=temp2*rozmiary[i]; licznik+=temp2*(rozmiary[najwiekszy]/rozmiary[i])*tempWys; i++; } else if (i!=iloscObrazow-1) { i++; } else { i=0; break; } } i=0; if (szer!=0) { cout<<-1; return 0; } continue; } } cout<<licznik; 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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | #include <bits/stdc++.h> using namespace std; #define speed ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0) #define pb push_back #define ll long long vector<ll>rozmiary; int main() { speed; ll wysokosc,szerokosc,iloscObrazow; cin>>wysokosc>>szerokosc>>iloscObrazow; for (ll i=0; i<iloscObrazow; i++) { ll rozmiar; cin>>rozmiar; rozmiary.pb(rozmiar); } sort(rozmiary.rbegin(),rozmiary.rend()); ll i=0,licznik=0; ll szer=szerokosc, wys=wysokosc; while (wys>0) { szer=szerokosc; if (i>=iloscObrazow) { cout<<-1; return 0; } if (rozmiary[i]>wys || rozmiary[i]>szer) { i++; continue; } if (szer>=rozmiary[i]) { ll temp=szer/rozmiary[i]; ll tempWys=wys/rozmiary[i]; licznik+=temp*tempWys; szer-=temp*rozmiary[i]; wys-=tempWys*rozmiary[i]; int najwiekszy=i; i++; while (i<iloscObrazow) { if (rozmiary[i]<=szer) { ll temp2=szer/rozmiary[i]; szer-=temp2*rozmiary[i]; licznik+=temp2*(rozmiary[najwiekszy]/rozmiary[i])*tempWys; i++; } else if (i!=iloscObrazow-1) { i++; } else { i=0; break; } } i=0; if (szer!=0) { cout<<-1; return 0; } continue; } } cout<<licznik; return 0; } |