Cod sursa(job #43344)

Utilizator mike4problemsRadu Gabriel mike4problems Data 29 martie 2007 23:27:31
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include<stdio.h>
#define Mod 10000
#define abs(x) ((x)>0?(x):-(x))

int X[2][88220];
int *a[2]={X[0]+44110,X[1]+44110};
int n,m,x,i,j,k,t,crt,prev,max;

int main()
 {
 freopen("diamant.in","r",stdin);
 freopen("diamant.out","w",stdout);
 scanf("%d%d%d",&n,&m,&x);
 if(abs(x)>44100)
  {
  printf("0\n");
  return 0;
  }
 a[0][0]=1;
 x=abs(x);
 for(i=1;i<=n;i++)
  for(j=1;j<=m;j++)
   {
   t++; crt=t&1; prev=!crt;
   max+=i*j;
   for(k=-max;k<=max;k++)
    a[crt][k]=(a[prev][k-i*j]+a[prev][k]+a[prev][k+i*j])%Mod;
   }
 printf("%d\n",a[(n*m)&1][x]);
 return 0;
 }