Cod sursa(job #48307)

Utilizator sdnxptVasiliu Radu sdnxpt Data 4 aprilie 2007 17:37:36
Problema Diamant Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <stdio.h>
#include <string.h>
#define tmax 44101
#define Nmax 44101

typedef int vect[Nmax];

vect an,ap,bn,bp;

int n,m;
long 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()
  {
  FILE * fin=fopen("diamant.in","r");
  fscanf(fin,"%d %d %ld",&n,&m,&x);
  fclose(fin);
}

void afisare()
  {
  FILE * fout=fopen("diamant.out","w");
  fprintf(fout,"%d\n",A(x));
  fclose(fout);
}

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);
        A(k)%=10000;    
        }
      }
}

int main()
  {
  citire();
  dinamic();
  afisare();
  return 0;
}