Cod sursa(job #425812)

Utilizator hadesgamesTache Alexandru hadesgames Data 26 martie 2010 09:55:00
Problema Diamant Scor 100
Compilator cpp Status done
Runda Simulare CNITV 2 Marime 0.64 kb
#include <cstdio>
FILE *in,*out;
int b[2][100005];
int a[500];
const int zero=50000, maxv=100000;
int main()
{
	int n,m,s,nr,i,j,q;
	in=fopen("diamant.in","r");
	out=fopen("diamant.out","w");
	fscanf(in,"%d%d%d",&n,&m,&s);
	nr=0;
	for (i=1;i<=n;i++)
		for (j=1;j<=m;j++)
		{
			nr++;
			a[nr]=i*j;
		}
	b[0][zero]=1;
	for (i=1;i<=nr;i++)
	{
		q=i%2;
		for (j=0;j<=maxv;j++)
		{
			b[q][j]=b[!q][j];
			if (j-a[i]>=0)
				b[q][j]+=b[!q][j-a[i]];
			if (j+a[i]<=maxv)
				b[q][j]+=b[!q][j+a[i]];
			b[q][j]%=10000;
		}
	}
	if (s+zero<0||s+zero>maxv)
		fprintf(out,"0\n");
	else
		fprintf(out,"%d\n",b[nr%2][s+zero]);
	fclose(in);
	fclose(out);
	return 0;
}