Cod sursa(job #309948)

Utilizator FlorianFlorian Marcu Florian Data 1 mai 2009 15:06:14
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<cstdio>
#include<string>
using namespace std;
#define K 45000
#define Mod 10000
int S, N, M;
int nr[2*K+100];
int nr2[2*K+100];
void dinamic()
{
	int i,j,k;
	nr2[K] = 1;
	for( i = 1; i<= N; ++i )
	
		for(j =1; j<=M;++j)
		{
		  for( k=-K; k<= K; ++k)
			  nr[k+K] = ( nr2[k+i*j+K] + nr2[k+K] + nr2[k-i*j+K] ) % Mod;
		  for (k=-K;k<=K;++k)
			  nr2[k+K] = nr[k+K];
					
		}
}
int p = 0;
int main()
{
	freopen("diamant.in","r",stdin);
	freopen("diamant.out","w",stdout);
	scanf("%d%d%d",&N,&M,&S);
	int i,j,s=0;
	for( i=1; i<=N; ++i)
		for(j=1;j<=M;++j)
			s += i*j;
	if(S > s || S < -s ) { printf("0\n"); return 0; }
	dinamic();
	printf("%d\n",nr[S+K]);
	return 0;
}