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
#include<bits/stdc++.h>
using namespace std;
long long rozmiary[37];
int main(){
        ios_base::sync_with_stdio(0);
        cin.tie(0);
        long long w, h;
        cin >> w >> h;
        int n; cin >> n;
        for (int i = 0; i < n; ++i){
              cin >> rozmiary[i];
        }
        sort(rozmiary, rozmiary + n);
        int prawo = 0;
        int dol = 0;
        long long akt_pole = 0;
        long long wynik = 0;
        for (int i = n - 1; i >= 0; --i){
              long long ile_razy_d = h/rozmiary[i];
              long long ile_razy_p = w/rozmiary[i];
              int minimum = min(ile_razy_d, ile_razy_p);
              long long ile_d = ile_razy_d * rozmiary[i];
              long long ile_p = ile_razy_p * rozmiary[i];
              prawo = ile_p;
              dol = ile_d;
              wynik  += ((ile_p * ile_d) - akt_pole)/(rozmiary[i] * rozmiary[i]);
              akt_pole = (ile_p * ile_d);
              //cout << prawo << " " << dol << "\n";
        }
        if (akt_pole != (w * h)){
            cout << -1;
            return 0;
        }
        cout << wynik << "\n";
}