Cod sursa(job #805697)

Utilizator paunmatei7FMI Paun Matei paunmatei7 Data 31 octombrie 2012 22:02:43
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<stdio.h>
#include<stdlib.h>
#define NMAX 100007
#define mod 10000
#define med 50000

using namespace std;

int n,m,x,sum,a[NMAX],b[NMAX];

int main()
{
	int n,m,i,j,x,val,k;

	freopen("diamant.in","r",stdin);
	freopen("diamant.out","w",stdout);

	scanf("%d %d %d",&n,&m,&x);

	for (i=1;i<=n;++i)
		for(j=1;j<=m;++j)
			sum+=i*j;
	a[med]=1;
	
	if (x>sum)// caz special
	{
		printf("0");
		return 0;
	}
	
	for(i=1;i<=n;++i)
		for(j=1;j<=m;++j)
		{
			val=i*j;
			for(k=-abs(sum);k<=abs(sum);++k)
				b[med+k]=(a[med+k]+a[med+k-val]+a[med+k+val])%mod;
			for(k=-abs(sum);k<=abs(sum);++k)
				a[med+k]=b[med+k];
		}

		printf("%d",a[med+x]);
	return 0;
}