Cod sursa(job #756280)

Utilizator matei_cChristescu Matei matei_c Data 9 iunie 2012 13:48:08
Problema Diamant Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<cstdio>

const int MOD = 10000 ;
const int MAX_N = 1000001 ;

int n,m,valoare ;
int maxval ;
int v[MAX_N],sol[MAX_N] ;

int main()
{
	
	freopen("diamant.in","r",stdin);
	freopen("diamant.out","w",stdout);
	
	scanf("%d%d%d",&n,&m,&valoare);
	
	for(int i=1;i<=n;++i)
		for(int j=1;j<=m;++j)
			maxval += i*j ;
	
	if(valoare > maxval || valoare < -maxval) 
		printf("0\n");
	else
	{	
		v[maxval] = 1 ;
		for(int i=1;i<=n;++i)
		{	
			for(int j=1;j<=m;++j) 
			{
				for(int k=-maxval;k<=maxval;++k)
					sol[k+maxval] = ( v[k+maxval] + v[k+i*j+maxval] + v[k-i*j+maxval] ) % MOD ;
				for(int k=-maxval;k<=maxval;++k)
					v[k+maxval] = sol[k+maxval] ;
			}
		}
	}	
	
	printf("%d\n",sol[valoare+maxval] );
	
	return 0 ;
	
}