#include <iostream>
#include <algorithm>
using namespace std;
long long h,w,n;
long long tab[31];
long long ile=1e18+1;
int main()
{
cin>>h>>w>>n;
for(int i=0;i<n;i++)
cin>>tab[i];
if(h%tab[0]!=0 || w%tab[0]!=0 || tab[0]>h || tab[0]>w)
{
cout<<-1;
return 0;
}
for(int z=0;z<n;z++){
long long zlicz=0;
int aktwys=0;
for(int i=z;i>=0;i--)
{
long long licz=0;
if(aktwys>=h)
break;
if(h-aktwys>=tab[i])
{licz=(h-aktwys)/tab[i];
aktwys=aktwys+licz*tab[i];}
else continue;
long long aktdlug=0,licz2=0;
for(int j=i;j>=0;j--)
{
if(aktdlug>=w)
break;
if(w-aktdlug>=tab[j])
{
licz2=(w-aktdlug)/tab[j];
aktdlug=aktdlug+licz2*tab[j];
}
else continue;
zlicz=zlicz+tab[i]*licz*licz2/tab[j];
}
}
ile=min(ile,zlicz);
}
cout<<ile;
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 | #include <iostream> #include <algorithm> using namespace std; long long h,w,n; long long tab[31]; long long ile=1e18+1; int main() { cin>>h>>w>>n; for(int i=0;i<n;i++) cin>>tab[i]; if(h%tab[0]!=0 || w%tab[0]!=0 || tab[0]>h || tab[0]>w) { cout<<-1; return 0; } for(int z=0;z<n;z++){ long long zlicz=0; int aktwys=0; for(int i=z;i>=0;i--) { long long licz=0; if(aktwys>=h) break; if(h-aktwys>=tab[i]) {licz=(h-aktwys)/tab[i]; aktwys=aktwys+licz*tab[i];} else continue; long long aktdlug=0,licz2=0; for(int j=i;j>=0;j--) { if(aktdlug>=w) break; if(w-aktdlug>=tab[j]) { licz2=(w-aktdlug)/tab[j]; aktdlug=aktdlug+licz2*tab[j]; } else continue; zlicz=zlicz+tab[i]*licz*licz2/tab[j]; } } ile=min(ile,zlicz); } cout<<ile; return 0; } |
English