Cod sursa(job #2520875)

Utilizator hurjui12AlexandruHurjui Alexandru-Mihai hurjui12Alexandru Data 9 ianuarie 2020 20:57:56
Problema Diamant Scor 90
Compilator cpp-64 Status done
Runda UltraDP (si altele) Marime 0.8 kb
#include <fstream>
using namespace std;

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

const int r = 10000;
const int c = 50000;

int main()
{
	int n, m, x, i, j, l;
	int a[401], k = 0, s = 0;
	int dp[2][100001] = {};
	//dp[i] = numarul de diamante de calitate i;
	fin >> n >> m >> x;
	x = abs(x);
	for (i = 1; i<=n; i++)
		for (j = 1; j<=m; j++)
		{
			k++;
			a[k] = i*j;
			s = s + a[k];
		}
	if (s < x)
	{
		fout << 0;
		return 0;
	}
	l = 0;
	/*
	for (i = -s; i<=s; i++)
		fout << i << ' ';
	fout << '\n';
	*/
	for (i = 1; i<=k; i++, l = 1-l)
	{
		for (j = -s; j<=s; j++)
			dp[l][c+j] = (dp[1-l][c+j] + dp[1-l][c+j-a[i]] + dp[1-l][c+j+a[i]])%r;
		dp[l][c+a[i]]++;
		dp[l][c-a[i]]++;
		/*
		for (j = -s; j<=s; j++)
			fout << dp[l][c+j] << "  ";
		fout << '\n';
		*/
	}
	fout << dp[1-l][c+x];
	return 0;
}