Cod sursa(job #1091232)

Utilizator rughibemBelcineanu Alexandru Ioan rughibem Data 25 ianuarie 2014 15:10:12
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<stdio.h>
#define DIFF 44100
#define MOD 10000
FILE *f=fopen("diamant.in","r"), *g=fopen("diamant.out","w");

long int n, m, x, i, j, u[2*DIFF+5], c[2*DIFF+5], p, k;
long int modulul(long int a){if(a<0){return 0-a;}return a;}

int main(){

    fscanf(f,"%ld %ld %ld\n",&n,&m,&x);
    if( modulul(x)>DIFF ){fprintf(g,"0\n");return 0;}

    u[DIFF]=1;

    for(i=1;i<=n;i++){
        for(j=1;j<=m;j++){

            p=i*j;

            for(k=p;k<=DIFF*2-p;k++)
                c[k]=u[k-p]+u[k+p];

            for(k=p;k<=DIFF*2-p;k++){
                u[k]= (u[k]+c[k])%MOD; c[k]=0;
            }

        }
    }

    fprintf(g,"%ld\n",u[x+DIFF]);

return 0;
}