Cod sursa(job #2203535)

Utilizator isav_costinVlad Costin Andrei isav_costin Data 12 mai 2018 17:10:42
Problema Diamant Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <cstdio>

#define MAX_X 44100
#define MOD 10000

using namespace std;

int count[2*MAX_X+5];
int copie[2*MAX_X+5];

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

  int n, m, k;

  scanf( "%d%d%d", &n, &m, &k );

  count[MAX_X]=1;

  for( int i=1;i<=n;i++ )
    for( int j=1;j<=m;j++ )
    {
      int val=i*j;

      for( int x=-MAX_X;x<=MAX_X;x++ )
      {
        copie[x-val+MAX_X]=(copie[x-val+MAX_X]+count[x+MAX_X])%MOD;
        copie[x+MAX_X]=(copie[x+MAX_X]+count[x+MAX_X])%MOD;
        copie[x+val+MAX_X]=(copie[x+val+MAX_X]+count[x+MAX_X])%MOD;
      }

      for( int x=-MAX_X;x<=MAX_X;x++ )
      {
        count[x+MAX_X]=copie[x+MAX_X];
        copie[x+MAX_X]=0;
      }
    }

  if( -MAX_X<=k && k<=MAX_X )
    printf( "%d", count[k+MAX_X] );
  else
    printf( "0" );

  return 0;
}