Cod sursa(job #355364)

Utilizator antoanelaAntoanela Siminiuc antoanela Data 10 octombrie 2009 21:05:10
Problema Diamant Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.53 kb
#include <cstdio>
#define lm 100000

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) 
	{
		printf("1");
		return 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-c];
				a[k] = v[k-c];
			}
			for (k=x; k>=c; k--) v[k]+=a[k-c];
			for (k=0; k<=x; k++) a[k]=0;	
		}
	printf("%d",v[x]);
}