Cod sursa(job #1195290)

Utilizator Robert29FMI Tilica Robert Robert29 Data 6 iunie 2014 20:18:27
Problema Diamant Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2013 Semestrul 2 Marime 0.68 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;
}