Cod sursa(job #825349)

Utilizator CS-meStanca Marian Ciprian CS-me Data 28 noiembrie 2012 20:03:13
Problema Diamant Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<stdio.h>
#include<string.h>
#define ls 50000
#define li -50000
#define DIM 60000
#define A(i) (((i)<0)?(An[-(i)]):(Ap[(i)]))
#define B(i) (((i)<0)?(Bn[-(i)]):(Bp[(i)]))

int An[DIM];
int Ap[DIM];

int Bn[DIM];
int Bp[DIM];

int i,j,n,m,k;


FILE *fin=fopen("diamant.in","r");
FILE *fout=fopen("diamant.out","w");

int main(){

    fscanf(fin,"%d %d %d",&n,&m,&k);

    if(k > ls){
        fprintf(fout,"0");
    }
    else{
        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;
                }
            }
        }

        fprintf(fout,"%d\n",A(k));

    }


return 0;
}