Cod sursa(job #429526)

Utilizator Mishu91Andrei Misarca Mishu91 Data 30 martie 2010 11:22:42
Problema Diamant Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.55 kb
#include <fstream>

using namespace std;

const int MOD = 10000;
const int MAX = 44100;

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

int N, M, X, A[2*MAX + 3];

int main()
{
	fin >> N >> M >> X;
	if(X < -MAX || X > MAX) 
	{
		fout << 0;
		return 0;
	}

	A[MAX] = 1;
	for(int i = 1; i <= N; ++i)
		for(int j = 1; j <= M; ++j)
		{
			int aux[2*MAX + 3];
			memcpy(aux, A, sizeof A);

			for(int k = 2*MAX; k >= 0; --k)
			{
				aux[k] = A[k-i*j] + A[k] + A[k+i*j];
				aux[k] %= MOD;
			}

			memcpy(A, aux, sizeof aux);
		}

	fout << A[MAX + X];
}