Cod sursa(job #34342)

Utilizator pauldbPaul-Dan Baltescu pauldb Data 20 martie 2007 17:42:58
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <stdio.h>

#define mid 44100
#define maxx 88210
#define mod 10000

int c[maxx],d[maxx];
int n,m,S,sol;

int main()
{
    freopen("diamant.in","r",stdin);
    freopen("diamant.out","w",stdout);
    
    scanf("%d %d %d",&n,&m,&S);
    
    int i,j,k;
    
    if ((S>mid) || (S<-mid))
    {
          printf("%d\n",0);
          return 0;
    }
    
    c[mid]=1;
    
    for (i=1;i<=n;i++)
      for (j=1;j<=m;j++)
      {
          for (k=0;k<maxx;k++) d[k]=c[k];
          
          for (k=0;k<maxx;k++)
            if (d[k]>0)
            {
                c[k+i*j]+=d[k];
                c[k-i*j]+=d[k];
                if (c[k+i*j]>mod) c[k+i*j]-=mod;
                if (c[k-i*j]>mod) c[k-i*j]-=mod;
          }
      }
      
    printf("%d\n",c[S+mid]);
          
    return 0;
}