Cod sursa(job #178796)

Utilizator stefanrStefan Ruseti stefanr Data 15 aprilie 2008 09:36:46
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include<fstream.h>
ifstream fin("diamant.in");
ofstream fout("diamant.out");

int n,m,x,li,ls,v[2][100000],mod=10000,Nmax;

int main()
{fin>>n>>m>>x;
Nmax=n*(n+1)*m*(m+1)/4;
if(x>Nmax || x<-Nmax) fout<<"0";
else
 if(x==Nmax || x==-Nmax) fout<<"1";
 else
  {int i,j,g,k;
   v[0][Nmax]=1;
   for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
     {k=(i-1)*m+j;
      for(g=li;g<=ls;g++) v[k%2][Nmax+g]=0;
      for(g=li;g<=ls;g++)
       if(v[(k-1)%2][Nmax+g]>0)
        {v[k%2][Nmax+g-i*j]+=v[(k-1)%2][Nmax+g];
         v[k%2][Nmax+g-i*j]%=mod;
         v[k%2][Nmax+g]+=v[(k-1)%2][Nmax+g];
         v[k%2][Nmax+g]%=mod;
         v[k%2][Nmax+g+i*j]+=v[(k-1)%2][Nmax+g];
         v[k%2][Nmax+g+i*j]%=mod;
        }
      li-=i*j;
      ls+=i*j;
     }
   fout<<v[(n*m)%2][Nmax+x];
  }
fin.close();
fout.close();
}