Cod sursa(job #279848)

Utilizator perticas_catalinperticas catalin perticas_catalin Data 13 martie 2009 00:31:17
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<stdio.h>
#include<string.h>
FILE*fin=fopen("diamant.in","r");
FILE*fout=fopen("diamant.out","w");
int n,m,sol[2][100010];
int t(int p)
{ return p+50000;}
int main()
{
  int old,nw=0,dim=1,maxp=0,x,i,j,k;
  memset(sol,0,sizeof(sol));
  sol[0][50000]=1;
  fscanf(fin,"%d%d%d",&n,&m,&x);
  for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
    {
      nw=dim%2;old=!nw;
      maxp+=i*j;
      for(k=-maxp;k<=maxp;k++)
        sol[nw][k+50000]=(sol[old][k+50000]+sol[old][k-i*j+50000]+sol[old][k+i*j+50000])%10000;               
      dim++;
    }
  if(x>=-50000&&x<=50000)
    fprintf(fout,"%d",sol[nw][x+50000]);
  else fprintf(fout,"0\n");  
  fclose(fin);
  fclose(fout);
  return 0;
}