Cod sursa(job #870960)

Utilizator dtoniucDaniel Toniuc dtoniuc Data 4 februarie 2013 10:12:16
Problema Diamant Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <cstdio>
#include <cstring>
#include <ctime>
#include <fstream>
using namespace std;

int An[1<<16];
int Ap[1<<16];

int Bn[1<<16];
int Bp[1<<16];

int i,j,n,m,k;

#define A(i) (((i)<0)?(An[-(i)]):(Ap[(i)]))
#define B(i) (((i)<0)?(Bn[-(i)]):(Bp[(i)]))

#define mi -44100
#define ma 44100

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

    scanf("%d%d%d",&n,&m,&k);
    A(0)=1;

    if(k>ma)
    {
        printf("0\n");
        return 0;
    }
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            {
                memcpy(Bn,An,sizeof(An));
                memcpy(Bp,Ap,sizeof(Ap));

                for(int t=ma;t>=mi;t--)
                {
                    A(t)=B(t-i*j)+B(t)+B(t+i*j);
                    A(t)%=10000;
                }
            }

    printf("%d",A(k));
    return 0;
}