#include <cstdio>
#define DEBUG false
int wys, szer, y, x, n, okno[32],maxPole,maxOkno,tempIle;
long long ile;
int main(){
scanf(" %d %d %d",&wys,&szer,&n);
for(int i=n; i>0; i--){
scanf(" %d",&okno[i]);
}
//zagospodaruj dostepna przestrzen
maxOkno = 0;
ile = 0;
x=szer;
while(x>0){
y = wys;
if(DEBUG)printf("pozostala szerokosc: %d, maxPole: %d\n",x,maxOkno);
if(x<y)
maxPole = x;
else
maxPole = y;
if(DEBUG)printf("MaxPole: %d\n",maxPole);
bool znaleziono = false;
maxOkno = -1;
tempIle = 0;
for(int i=1; i<=n; i++){
if(maxPole /okno[i] < 1 )
continue;
if(!znaleziono){
//printf("--mpole %d okno:%d\n",maxPole,okno[i]);
maxOkno = okno[i];
znaleziono = true;
if(DEBUG)printf("maxOkno:%d\n",maxOkno);
}
tempIle += (y / okno[i]) * (maxOkno / okno[i]);
if(DEBUG)printf("i:%d, ile:%d\n",i,tempIle);
y %= okno[i];
if(y==0) break;
}
if(y!=0){
printf("-1\n");
return 0;
}
ile += ((long long)(x/maxOkno)) * ((long long)tempIle);
szer %= maxOkno;
x = szer;
}
if(x!=0)
printf("-1\n");
else
printf("%lld\n",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 51 52 53 54 | #include <cstdio> #define DEBUG false int wys, szer, y, x, n, okno[32],maxPole,maxOkno,tempIle; long long ile; int main(){ scanf(" %d %d %d",&wys,&szer,&n); for(int i=n; i>0; i--){ scanf(" %d",&okno[i]); } //zagospodaruj dostepna przestrzen maxOkno = 0; ile = 0; x=szer; while(x>0){ y = wys; if(DEBUG)printf("pozostala szerokosc: %d, maxPole: %d\n",x,maxOkno); if(x<y) maxPole = x; else maxPole = y; if(DEBUG)printf("MaxPole: %d\n",maxPole); bool znaleziono = false; maxOkno = -1; tempIle = 0; for(int i=1; i<=n; i++){ if(maxPole /okno[i] < 1 ) continue; if(!znaleziono){ //printf("--mpole %d okno:%d\n",maxPole,okno[i]); maxOkno = okno[i]; znaleziono = true; if(DEBUG)printf("maxOkno:%d\n",maxOkno); } tempIle += (y / okno[i]) * (maxOkno / okno[i]); if(DEBUG)printf("i:%d, ile:%d\n",i,tempIle); y %= okno[i]; if(y==0) break; } if(y!=0){ printf("-1\n"); return 0; } ile += ((long long)(x/maxOkno)) * ((long long)tempIle); szer %= maxOkno; x = szer; } if(x!=0) printf("-1\n"); else printf("%lld\n",ile); return 0; } |
English