Cod sursa(job #1017566)

Utilizator enedumitruene dumitru enedumitru Data 27 octombrie 2013 22:14:17
Problema Diamant Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <cstdio>
#include <cstring>
#include <ctime>
using namespace std;
int An[1<<16];
int Ap[1<<16];
int Bn[1<<16];
int Bp[1<<16];
int i,j,n,m,k;
#define A(i) (((i)<0)?(An[-(i)]):(Ap[(i)]))
#define B(i) (((i)<0)?(Bn[-(i)]):(Bp[(i)]))
#define li -50000
#define ls 50000
int main()
{	freopen ("diamant.in","r",stdin);
	freopen ("diamant.out","w",stdout);
	scanf ("%d%d%d",&n,&m,&k);
	if (k>ls) {printf ("0\n"); return 0;}
	A(0)=1;
	for (i=1;i<=n;i++)
		for (j=1;j<=m;j++)
		{	memcpy(Bn,An,sizeof(An));
			memcpy(Bp,Ap,sizeof(Bp));
			for (int t=ls;t>=li;t--)
				{A(t)=B(t-i*j)+B(t)+B(t+i*j); A(t)%=10000;}
		}
	printf ("%d\n",A(k)); return 0;
}