Cod sursa(job #1342117)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 13 februarie 2015 15:43:38
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <cstdio>
#define nr 45000
using namespace std;
FILE *f=fopen("diamant.in","r");
FILE *g=fopen("diamant.out","w");
int n,m,x,y,sum;
int a[25][25];
int v[100000],p[100000];

int main()
{int i,j,k;
fscanf(f,"%d %d %d",&n,&m,&x);
for (i=1;i<=n;i++) for (j=1;j<=m;j++) {a[i][j]=i*j;
                                       sum+=a[i][j];}
if (x>sum||x<-sum) {fprintf(g,"0\n");
                    return 0;}
v[nr]=1;
for (i=1;i<=n;i++) for (j=1;j<=m;j++)
    {y=a[i][j];
     for (k=2*nr-y;k>=0;k--) if (v[k]!=0)
                                 p[k+y]+=v[k];
     for (k=y;k<=2*nr;k++) if (v[k]!=0)
                                p[k-y]+=v[k];

     for (k=0;k<=2*nr;k++) {v[k]+=p[k];
                            v[k]%=10000;
                            p[k]=0;
                            }
     }
fprintf(g,"%d",v[nr+x]);
return 0;
}