Cod sursa(job #182475)

Utilizator pandaemonAndrei Popescu pandaemon Data 20 aprilie 2008 22:25:26
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<stdio.h>
#include<string.h>

#define SMAX 44100
#define REST 10000

int n,m,i,j, v1[SMAX+10],v2[SMAX+10];

long long k,x,lim,suma;

long long inline modul(long long x)
{ if(x<0) return x*-1;
  else    return x; }

int main()
{

  freopen("diamant.in","r",stdin);
  freopen("diamant.out","w",stdout);

  scanf("%d %d %lld",&n,&m,&suma);

  if(modul(suma) > SMAX) { printf("0\n"); return 0; }

  v2[0]=1;

  for(i=1; i<=n; i++)
  for(j=1; j<=m; j++)

  {
     lim += x=i*j;

     for(k=0; k<=lim; k++)

       v1[k] = (v2[k] + v2[modul(k-x)] + v2[k+x]) % REST;

     memcpy( v2,v1,sizeof(v1) );
  }

  printf( "%d\n",v2[modul(suma)] );  return 0;

}