Cod sursa(job #1343541)

Utilizator iulianrotaruRotaru Gheorghe-Iulian iulianrotaru Data 15 februarie 2015 16:30:58
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 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>44100 || k<-44100) {printf("0\n");return 0;}
    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;
}