Cod sursa(job #429550)

Utilizator Mishu91Andrei Misarca Mishu91 Data 30 martie 2010 11:37:04
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 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 + 5];

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

	int aux[2*MAX + 5];
	A[MAX] = 1;
	for(int i = 1; i <= N; ++i)
		for(int j = 1; j <= M; ++j)
		{
			for(int k = 0; k <= 2*MAX; ++k)
				aux[k] = A[k];

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

					if(k+i*j <= 2*MAX)
					{
						A[k+i*j] += aux[k];
						if(A[k+i*j] >= MOD)
							A[k+i*j] -= MOD;
					}
				}
		}

	fout << A[MAX + X];
}