Cod sursa(job #355369)

Utilizator antoanelaAntoanela Siminiuc antoanela Data 10 octombrie 2009 21:11:44
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.55 kb
#include <cstdio>
#define lm 100000
#define X 10000

int v[lm], a[lm], n, m, x, l, i, j, c, k;

int main()
{
	freopen("diamant.in","r",stdin);
	freopen("diamant.out","w",stdout);
	scanf("%d %d %d",&n, &m, &x);
	v[0]=1;
	l=m*n*(m+1)*(n+1)/4;
	if (x>l || x<-l)
	{
		x=1;
		n=0;
	}
	x+=l;
	for (i=1; i<=n; i++)
		for (j=1; j<=m; j++)
		{
			c=i*j;
			for (k=x; k>=c; k--)
			{
				v[k]=(v[k]+v[k-c])%X;
				a[k] = v[k-c];
			}
			for (k=x; k>=c; k--) v[k]=(v[k]+a[k-c])%X;
			for (k=0; k<=x; k++) a[k]=0;	
		}
	printf("%d",v[x]);
}