#include <bits/stdc++.h> using namespace std; int find_max_id(long long w, vector<long long> &img, long long h) { int max_i=0; for(max_i; max_i<img.size(); ++max_i) { if(img[max_i] <= w && img[max_i] <= h) continue; else { max_i--; break; } } if(max_i == img.size()) max_i--; return max_i; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); long long h,w,n; cin>>h>>w>>n; vector<long long> img(n); for(int i=0; i<n; ++i) cin>>img[i]; if(h%img[0] != 0 || w%img[0] != 0) { cout<<-1<<'\n'; return 0; } long long ans=0, ans_tmp=0; int org_w = w; int id; while(h > 0) { int first_id = find_max_id(org_w, img, h); int id = first_id; w = org_w; ans_tmp = 0; while(w > 0) { ans_tmp += (w/img[id])*(img[first_id]/img[id]); w -= img[id]*(w/img[id]); id = find_max_id(w, img, img[first_id]); } ans += (h/img[first_id])*ans_tmp; h -= img[first_id]*(h/img[first_id]); } cout<<ans<<'\n'; 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 | #include <bits/stdc++.h> using namespace std; int find_max_id(long long w, vector<long long> &img, long long h) { int max_i=0; for(max_i; max_i<img.size(); ++max_i) { if(img[max_i] <= w && img[max_i] <= h) continue; else { max_i--; break; } } if(max_i == img.size()) max_i--; return max_i; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); long long h,w,n; cin>>h>>w>>n; vector<long long> img(n); for(int i=0; i<n; ++i) cin>>img[i]; if(h%img[0] != 0 || w%img[0] != 0) { cout<<-1<<'\n'; return 0; } long long ans=0, ans_tmp=0; int org_w = w; int id; while(h > 0) { int first_id = find_max_id(org_w, img, h); int id = first_id; w = org_w; ans_tmp = 0; while(w > 0) { ans_tmp += (w/img[id])*(img[first_id]/img[id]); w -= img[id]*(w/img[id]); id = find_max_id(w, img, img[first_id]); } ans += (h/img[first_id])*ans_tmp; h -= img[first_id]*(h/img[first_id]); } cout<<ans<<'\n'; return 0; } |