#include<bits/stdc++.h>
#define ll long long
using namespace std;
long long h,w,n;
bool NIEEEE;
long long d[1000007];
long long ile=0;
ll suma=0;
void zapel(int A, int B, int N){
if(min(A,B)==0){
return;
}
if(min(A,B)!=0 && min(A,B)<d[1]){
NIEEEE=true;
return;
}
ll h;
for(int i=N; i>=1; i--){
if(min(A,B)>=d[i]){
h=i;
i=-1;
}
}
ll X=A/d[h];
ll Y=B/d[h];
suma+=X*Y;
ll AA=A-X*d[h];
ll BB=B-Y*d[h];
zapel(AA, B, h);
zapel(A-AA, BB, h);
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
NIEEEE=false;
cin>>h>>w;
cin>>n;
for(int i=1; i<=n; i++){
cin>>d[i];
}
zapel(h,w,n);
if(NIEEEE){
cout<<-1;
}
else
cout<<suma;
}
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 | #include<bits/stdc++.h> #define ll long long using namespace std; long long h,w,n; bool NIEEEE; long long d[1000007]; long long ile=0; ll suma=0; void zapel(int A, int B, int N){ if(min(A,B)==0){ return; } if(min(A,B)!=0 && min(A,B)<d[1]){ NIEEEE=true; return; } ll h; for(int i=N; i>=1; i--){ if(min(A,B)>=d[i]){ h=i; i=-1; } } ll X=A/d[h]; ll Y=B/d[h]; suma+=X*Y; ll AA=A-X*d[h]; ll BB=B-Y*d[h]; zapel(AA, B, h); zapel(A-AA, BB, h); } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); NIEEEE=false; cin>>h>>w; cin>>n; for(int i=1; i<=n; i++){ cin>>d[i]; } zapel(h,w,n); if(NIEEEE){ cout<<-1; } else cout<<suma; } |
English