Cod sursa(job #1774853)

Utilizator nnnmmmcioltan alex nnnmmm Data 9 octombrie 2016 15:26:59
Problema Diamant Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<cstdio>
#include<cstring>
const int SMAX=50000,SMIN=-50000,MOD=10000;
int d[4][1<<16];

#define JegA(i) (((i)<0)?(d[1][-(i)]):(d[0][(i)]))
#define JegB(i) (((i)<0)?(d[3][-(i)]):(d[2][(i)]))

int main()
{
 FILE *in=fopen("diamant.in","r");
 int n,m,x;
 fscanf(in,"%d %d %d ",&n,&m,&x);
 fclose(in);
 FILE *out=fopen("diamant.out","w");
 if(x>SMAX)
    {
     fprintf(out,"%d\n",0);
     fclose(out);
     return 0;
    }
 d[0][0]=1;
 for(int i=1;i<=n;i++)
     {
      for(int j=1;j<=m;j++)
          {
           memcpy(d[2],d[0],sizeof d[0]);
           memcpy(d[3],d[1],sizeof d[1]);
           for(int s=SMAX;s>=SMIN;s--)
               {
                JegA(s)=JegB(s-i*j)+JegB(s)+JegB(s+i*j);
                JegA(s)%=MOD;
               }
          }
     }
 fprintf(out,"%d\n",JegA(x));
 fclose(out);
 return 0;
}