Cod sursa(job #1732556)

Utilizator AnaRaduAna-Maria Radu AnaRadu Data 21 iulie 2016 21:59:16
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <stdio.h>
#define lim 200005
#define mod 10000
int v[lim],d[lim];
#define v (v + 100000)
#define d (d + 100000)
int main(){
    FILE *fin,*fout;
    fin=fopen("diamant.in","r");
    fout=fopen("diamant.out","w");
    int i,j,k,n,m,x,val=0;
    fscanf(fin,"%d%d%d",&n,&m,&x);
    d[0]=1;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++){
            for(k=-val;k<=val;k++)
                if(d[k]!=0){
                    v[k]+=d[k];
                    v[k+i*j]+=d[k];
                    v[k-i*j]+=d[k];
                }
            val+=i*j;
            for(k=-val;k<=val;k++){
                d[k]=v[k]%mod;
                v[k]=0;
            }
        }
    if(x>val||x<-val)
        fprintf(fout,"0\n");
    else
        fprintf(fout,"%d\n",d[x]);
    fclose(fin);
    fclose(fout);
    return 0;
}