Cod sursa(job #799825)

Utilizator Robert29FMI Tilica Robert Robert29 Data 20 octombrie 2012 10:11:31
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<stdio.h>
FILE*f=fopen("diamant.in","r");
FILE*g=fopen("diamant.out","w");
int n,m,x,k,v[401],nr,w1[100000],max;
int w[100000];
int main()
{
	fscanf(f,"%d%d%d",&n,&m,&x);
	
	for(int i=1;i<=n;++i)
		for(int j=1;j<=m;++j)
		{
			v[++nr]=i*j;
			k+=v[nr];
		}
	if(x<0)
		x=-x;
	if(x>k)
		fprintf(g,"0");
	else
	{
		w[0]=1;
		for(int i=1;i<=nr;++i)
		{
			
			for(int j=k;j>=0;--j)
			{
				w1[j]+=w[j+v[i]];
				if(j-v[i]>=0)
					w1[j]+=w[j-v[i]];
				else
					w1[j]+=w[-j+v[i]];
			}
		
			for(int j=0;j<=k;++j)
			{
				w[j]+=w1[j];
				w[j]%=10000;
				w1[j]=0;
			}
		}
		
		
		
		fprintf(g,"%d",w[x]);
	}
		
		
		
	fclose(f);
	fclose(g);
	return 0;
}