Cod sursa(job #2413552)

Utilizator mihai50000Mihai-Cristian Popescu mihai50000 Data 23 aprilie 2019 15:12:22
Problema Diamant Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in("diamant.in");
ofstream out("diamant.out");

const int mod = 10000;

main()
{
	int n, m, x;
	in >> n >> m >> x;
	
	int sum = 0;
	
	for(int i = 1; i <= n; i++)
		for(int j = 1; j <= m; j++)
		{
			sum += i * j;
		}
	
	vector <int> dp[2];
	
	dp[0].resize(sum * 2 + 7);
	dp[1].resize(sum * 2 + 7);
	
	if(x < -sum || x > sum)
	{
		out << "0\n";
		return 0;
	}
	
	dp[0][sum] = 1;
	
	for(int i = 1; i <= n; i++)
		for(int j = 1; j <= m; j++)
		{
			for(int p = 0; p <= 2 * sum; p++)
			{
				dp[1][p] = dp[0][p];
				
				if(p + i * j <= 2 * sum)
					dp[1][p] += dp[0][p + i * j];
				
				if(p - i * j >= 0)
					dp[1][p] += dp[0][p - i * j];
				
				dp[1][p] %= mod;
			}
			
			dp[0].swap(dp[1]);
		}
	
	out << dp[0][sum + x];
}