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
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {

	long long h, w; cin >> h >> w;

	int k; cin >> k;
	vector<long long> obrazy(k);
	for (int i = 0; i < k; i++) {
		cin >> obrazy[i];
	}

	sort(obrazy.begin(), obrazy.end(), greater<long long>());

	if (h % obrazy.back() != 0 || w % obrazy.back() != 0) {
		cout << -1 << endl;
		return 0;
	}

	long long res = 1LL * (h / obrazy[0]) * (w / obrazy[0]), curr = 0, past = 0;
	for (int i = 1; i < k; i++) {
		res += (h / obrazy[i]) * (w / obrazy[i]) - (h / obrazy[i - 1]) * (w / obrazy[i - 1]) * (obrazy[i - 1] / obrazy[i]) * (obrazy[i - 1] / obrazy[i]);
	}

	cout << res << endl;


	return 0;
}