Cod sursa(job #146085)

Utilizator ZweisteinAdrian VELICU Zweistein Data 1 martie 2008 10:13:07
Problema Diamant Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <stdio.h>
#include <memory.h>
int main (void) {
	FILE * fi = fopen("diamant.in","rt");
	FILE * fo = fopen("diamant.out","wt");

	const long NMAX=80000;
	const long pivot=NMAX/2;
	long x, n, m;
	fscanf(fi,"%ld %ld %ld",&n,&m,&x);
	
	long cur[NMAX], noo[NMAX];
	memset(cur,0,sizeof(cur));
	memset(noo,0,sizeof(noo));

	cur[pivot]=1; noo[pivot]=1;
//	for (long i=0; i<vars; i++) {
	for (long xi=1; xi<=n; xi++) for (long xj=1; xj<=m; xj++) {
		long vi=xi*xj;
		for (long j=1; j<NMAX; j++)
			if (cur[j]!=0) 
				if ((j+vi>0) && (j+vi<NMAX)) {
					noo[j+vi]+=cur[j];
				};
		for (long j=1; j<NMAX; j++)
			if (cur[j]!=0) 
				if ((j-vi>0) && (j-vi<NMAX)) {
					noo[j-vi]+=cur[j];
				};
		memcpy(cur,noo,sizeof(cur));
	}
	fprintf(fo,"%ld\n",cur[pivot+x]);

	fclose(fi); fclose(fo);
	return 0;
};