Cod sursa(job #61912)

Utilizator crawlerPuni Andrei Paul crawler Data 21 mai 2007 07:40:06
Problema Diamant Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <cstdio>
#include <string>

using namespace std;

#define MOD 10000

#define a(i,j) a[i][j+lim]
#define Nmax 100100

short a[2][Nmax];

int main()
 {
  freopen("diamant.in","r",stdin);
  freopen("diamant.out","w",stdout);
  
  int i,j,k,n,m,s,p1=0,p2=1, lim = 0;
  
  scanf("%d%d",&n,&m,&s);
  
  for(i=1;i<=n;++i)
   for(j=1;j<=m;++j)
    lim += i*j;
  
  if(s > lim || s < -lim)  
   {
    printf("0\n");
    return 0;       
   }
        
  a(p1,0) = 1;
  
  for(i=1;i<=n;++i)
   for(j=1;j<=m;++j)
    {
     memset(a[p2],0,sizeof(a[p2]));               
     for(k=-lim;k<=lim;++k)
      a(p2,k) = (a(p1,k+i*j) + a(p1,k) + a(p1,k-i*j)) % MOD;
     swap(p1,p2); 
    }

  printf("%d\n",a(p1,s));                    
          
  return 0;         
 }