Cod sursa(job #1462255)

Utilizator heracleRadu Muntean heracle Data 17 iulie 2015 15:22:13
Problema Diamant Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <cstdio>
#include <cstring>

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

int n,m,k;

int bmod[90008];
int baux[90008];

int *mod,*aux;

int main()
{
	mod=bmod+45003;
	aux=baux+45003;
    fscanf(in,"%d%d%d",&n,&m,&k);

    mod[0]=1;

    if(k>=45000 || k<=-45000)
    {
		fprintf(out,"0\n");
		return 0;
    }

    for(int i=1; i<=n; i++)
    {
		for(int j=1; j<=m; j++)
		{
			memset(baux,0,sizeof baux);
			for(int f=-45000+1; f<45000; f++)
			{
				for(int g=-1; g<=1; g++)
				{
					aux[f+i*j*g]+=mod[f];
				}
			}

			for(int f=-45000+1; f<45000; f++)
			{
				mod[f]=aux[f];
			}
		}
    }

    fprintf(out,"%d\n",mod[k]);

    return 0;
}