Cod sursa(job #2204200)

Utilizator andra1782Andra Alazaroaie andra1782 Data 14 mai 2018 22:52:46
Problema Diamant Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 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);
    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;
            }
      }
    if(-MAXX<=x && x<=MAXX)
        fprintf(fout,"%d\n",count[x+MAXX]);
    else
        fprintf(fout,"0\n");
    fclose(fin);
    fclose(fout);
    return 0;
}