Cod sursa(job #425821)

Utilizator FlorianFlorian Marcu Florian Data 26 martie 2010 10:07:45
Problema Diamant Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
using namespace std;
#include<fstream>
int N, M, X;
const int MAX_S = 100007, C = 50000, mod = 10000,MAX = 44100;
int u[MAX_S], nr[MAX_S], tmp[MAX_S], aux[MAX_S];
int main()
{
	
	ifstream in("diamant.in"); ofstream out("diamant.out");
	in>>N>>M>>X;
	int i,j, s;
	if(X < -MAX || X > MAX) { out<<"0\n"; return 0; }
	u[C] = 1; nr[C] = 1;
	for(i = 1; i <= N; ++i)
		for(j = 1; j <= M; ++j)
		{
			for(s = 0; s < MAX_S; ++s)
				tmp[s] = u[s], aux[s] = nr[s];
			for(s = 0; s < MAX_S; ++s)
				if(tmp[s])
				{
					u[s-i*j] = 1;
					nr[s-i*j] += aux[s]; nr[s-i*j]%=mod;
					u[s+i*j] = 1;
					nr[s+i*j] += aux[s]; nr[s+i*j]%=mod;
				}
		}
	out<<nr[X+C]<<"\n";
	return 0;
}