Cod sursa(job #1188786)

Utilizator nod_softwareBudisteanu Ionut Alexandru nod_software Data 20 mai 2014 16:28:33
Problema Diamant Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <cstdio>
#include <cstring>

using namespace std;

int An[65536], Ap[65536];
int Bn[65536], Bp[65536];

int N,M,K;

//----------------------------------------------------------
void ReadData()
{
    FILE * fIn = fopen("diamant.in","r");

    fscanf (fIn,"%d %d %d",&N,&M,&K);

    fclose(fIn);
}
//----------------------------------------------------------
int main()
{
	ReadData();

	FILE * fOut;
	fOut = fopen("diamant.out","w");

	if (K>50000)
    {
		fprintf (fOut,"0\n");
		return 0;
	}

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

	A(0)=1;


	for (int i=1;i<=N;i++)
    {
		for (int j=1;j<=M;j++)
        {
			memcpy(Bn,An,sizeof(An));
			memcpy(Bp,Ap,sizeof(Bp));

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

	fprintf (fOut,"%d\n",A(K));
	fclose(fOut);

	return 0;

}