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