Cod sursa(job #1462254)

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

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

int n,m,k;

int bmod[80008];
int baux[80008];

int *mod,*aux;

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

    mod[0]=1;

    if(k>=40000 || k<=-40000)
    {
		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=-40000+1; f<40000; f++)
			{
				for(int g=-1; g<=1; g++)
				{
					if(f+i*j*g>-40000 && f+i*j*g<40000)
					{
						aux[f+i*j*g]+=mod[f];
					}
				}
			}

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

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

    return 0;
}