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
#include <bits/stdc++.h>
using namespace std;
int main()
{
	int h,w;
	cin>>h>>w;
	int n;
	cin>>n;
	vector<int>t(n);
	for(int i=0; i<n; i++)
		cin>>t[i];
	if(h%t[0]+w%t[0])
	{
		cout<<"-1\n";
		return 0;
	}
	int id=n-1;
	long long int wyn=0;
	auto roz=[&](long long int dlu, long long int sze)
	{
		long long int wyn1=0;
		for(int i=n-1; i>=0; i--)
		{
			wyn1+=(dlu/t[i])*(sze/t[i]);
			sze%=t[i];
		}
		return wyn1;
	};
	while(id!=-1)
	{
		long long int i1=h/t[id],i2=w/t[id];
		wyn+=i1*i2;
		wyn+=roz(i2*t[id],h-i1*t[id]);
		wyn+=roz(i1*t[id],w-i2*t[id]);
		h-=i1*t[id];
		w-=i2*t[id];
		id--;
	}
	cout<<wyn<<"\n";
}