Cod sursa(job #48330)

Utilizator sdnxptVasiliu Radu sdnxpt Data 4 aprilie 2007 17:55:28
Problema Diamant Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <cstdio>
#include <cstring>
#include <ctime>

using namespace std;
#define tmax 44101
#define Nmax 44200

typedef int vect[Nmax];

vect an,ap,bn,bp;

int n,m;
int x;
#define li -tmax
#define ls tmax
#define A(i) (((i)<0)?(an[-(i)]):(ap[(i)]))
#define B(i) (((i)<0)?(bn[-(i)]):(bp[(i)]))

void citire()
  {
  freopen("diamant.in","r",stdin);
  scanf("%d %d %d",&n,&m,&x);
}

void afisare()
  {
  freopen("diamant.out","w",stdout);
  if(x<=ls) printf("%d\n",A(x));
  else printf("0\n");
}

void dinamic()
  {
  int i,j,k;
  A(0)=1;
  for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
      {
      memcpy(bn,an,sizeof(an));
      memcpy(bp,ap,sizeof(ap));
      for(k=ls;k>=li;k--)
        A(k)=(B(k-i*j)+B(k)+B(k+i*j))%10000;
      }
}

int main()
  {
  citire();
  if(x<=ls) dinamic();
  afisare();
  return 0;
}