Cod sursa(job #34532)

Utilizator crusRus Cristian crus Data 20 martie 2007 21:05:28
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <stdio.h>
#include <string.h>
#define input "diamant.in"
#define output "diamant.out"
long n,m,x,s,i,j,k;
long s1[100000],s2[100000];
#define rest 10000
#define origine 50000
void citire()
{
	FILE *fin;
	fin=fopen(input,"r");
	fscanf(fin,"%ld %ld %ld",&n,&m,&x);
	fclose(fin);
}
void solve()
{	
	s2[origine]=1;
	for (i=1;i<=n;i++)
		for (j=1;j<=m;j++)
			{
			for (k=origine-44100;k<=origine+44100;k++)
				s1[k]=s2[k];
			memset(s2,0,sizeof(s2));
			for (k=origine-44100;k<=origine+44100;k++)
				{
				if (k-i*j>=origine-44100)
					s2[k]=s1[k-i*j];
				s2[k]+=s1[k];
				if (k+i*j<=origine+44100)
					s2[k]+=s1[k+i*j];			
				s2[k]%=rest;
				}			
			}
}
long modul(long x)
{
	if (x) return x;
	return -x;
}
void afisare()
{
	FILE *fout;
	long sol=0;
	fout=fopen(output,"w");
	if (modul(x)>44100) sol=0;
	   else sol=s2[origine+x];
	fprintf(fout,"%ld",sol);
	fclose(fout);
}
int main()
{
	citire();
	solve();
	afisare();
	return 0;
}