Cod sursa(job #1228355)

Utilizator sddddgjdZloteanu Anastasia sddddgjd Data 13 septembrie 2014 21:54:10
Problema Diamant Scor 90
Compilator c Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<stdio.h>
#include<math.h>
#define MAXN 20
#define MOD 10000
int v[100000],cant[100000],cant1[100000];
int main(){
    FILE *fin,*fout;
    fin=fopen("diamant.in","r");
    fout=fopen("diamant.out","w");
    int n,m,x;
    fscanf(fin,"%d%d%d",&n,&m,&x);
    x=abs(x);
    int i,j,cont=0,maxS=0;
    for(i=0; i<n; i++)
        for(j=0; j<m; j++){
            v[cont++]=(i+1)*(j+1);
            maxS+=(i+1)*(j+1);
        }
    cant[0]=1;
    for(i=0; i<cont; i++){
        for(j=maxS;j>=0;j--){
            cant1[j]+=cant[j+v[i]];
            if(j-v[i]>=0)
                cant1[j]+=cant[j-v[i]];
            else
                cant1[j]+=cant[-j+v[i]];
        }
        for(j=0;j<=maxS;j++){
            cant[j]=(cant[j]+cant1[j])%MOD;
            cant1[j]=0;
        }
    }
    fprintf(fout,"%d",cant[x]);
    return 0;
}