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