Cod sursa(job #2204202)

Utilizator andra1782Andra Alazaroaie andra1782 Data 14 mai 2018 22:54:00
Problema Diamant Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <stdio.h>
#define MAXX 44101
#define MOD 10000
int count[2*MAXX],copie[2*MAXX];
int main(){
    FILE *fin=fopen("diamant.in","r");
    FILE *fout=fopen("diamant.out","w");
    int n,m,x,i,j,val,k;

    fscanf(fin,"%d%d%d",&m,&n,&x);
    if(-MAXX<x && x<MAXX){
        count[MAXX]=1;
        for(i=1; i<=n; i++)
            for(j=1; j<=m; j++){
                val=i*j;
                for(k=-MAXX; k<=MAXX; k++){
                    copie[k-val+MAXX]=(copie[k-val+MAXX]+count[k+MAXX])%MOD;
                    copie[k    +MAXX]=(copie[k    +MAXX]+count[k+MAXX])%MOD;
                    copie[k+val+MAXX]=(copie[k+val+MAXX]+count[k+MAXX])%MOD;
                }
                for(k=-MAXX; k<=MAXX; k++){
                    count[k+MAXX]=copie[k+MAXX];
                    copie[k+MAXX]=0;
                }
          }
        fprintf(fout,"%d\n",count[x+MAXX]);
    }else
        fprintf(fout,"0\n");
    fclose(fin);
    fclose(fout);
    return 0;
}