Cod sursa(job #296279)

Utilizator taloibogdanTaloi Bogdan Cristian taloibogdan Data 4 aprilie 2009 15:49:22
Problema Diamant Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<stdio.h>
#include<string.h>
#define a(i) ((i>=0)?(ap[i]):(an[-(i)]))
#define b(i) ((i>=0)?(bp[i]):(bn[-(i)]))
long n,m,x,li,ls,i,j,k,ap[65537],an[65537],bp[65537],bn[65537];
int main()
{
 freopen("diamant.in","r",stdin);
 freopen("diamant.out","w",stdout);
 scanf("%ld%ld%ld",&n,&m,&x);
 li=0;ls=0;
 for(i=1;i<=n;++i)
    for(j=1;j<=m;++j)
       {li-=(i*j);ls+=(i*j);}
 if(x>ls||x<li){printf("0\n");return 0;}
 ap[0]=1;
 for(i=1;i<=n;++i)
    for(j=1;j<=m;++j)
       {memcpy(bn,an,sizeof(an));
        memcpy(bp,ap,sizeof(ap));
        for(k=ls;k>=li;--k)
           a(k)=b(k-(i*j))+b(k)+b(k+(i*j)),a(k)%=10000;}
 printf("%ld\n",a(x));
 return 0;
}