#include <iostream> #include <algorithm> #include <vector> #define int long long using namespace std; int wynik (int h, int w, vector<int> &obrazy, int wykorzystane){ if (h == 0 || w == 0){ return 0; }else if (wykorzystane == obrazy.size()){ cout << -1 << "\n"; exit(0); } int pom = obrazy[obrazy.size()-1-wykorzystane]; wykorzystane++; int m = h/pom; int n = w/pom; int odp = m*n; return odp + wynik(h-pom*m, pom*n, obrazy, wykorzystane) + wynik(pom*m, w-pom*n, obrazy, wykorzystane) + wynik(h-pom*m, w-pom*n, obrazy, wykorzystane); } int32_t main(){ int h, w; cin >> h >> w; int n; cin >> n; vector<int> obrazy(n); for(int i = 0; i < n; i++){ cin >> obrazy[i]; } cout << wynik(h, w, obrazy, 0) << "\n"; }
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 | #include <iostream> #include <algorithm> #include <vector> #define int long long using namespace std; int wynik (int h, int w, vector<int> &obrazy, int wykorzystane){ if (h == 0 || w == 0){ return 0; }else if (wykorzystane == obrazy.size()){ cout << -1 << "\n"; exit(0); } int pom = obrazy[obrazy.size()-1-wykorzystane]; wykorzystane++; int m = h/pom; int n = w/pom; int odp = m*n; return odp + wynik(h-pom*m, pom*n, obrazy, wykorzystane) + wynik(pom*m, w-pom*n, obrazy, wykorzystane) + wynik(h-pom*m, w-pom*n, obrazy, wykorzystane); } int32_t main(){ int h, w; cin >> h >> w; int n; cin >> n; vector<int> obrazy(n); for(int i = 0; i < n; i++){ cin >> obrazy[i]; } cout << wynik(h, w, obrazy, 0) << "\n"; } |