Cod sursa(job #34768)

Utilizator TYTUSVlad Saveluc TYTUS Data 21 martie 2007 13:00:33
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <cstdio>
using namespace std;

const int MOD = 10000;
const int DELTA = 81000;

int mat[2][2 * 81000];

int main() {
	FILE *fin = fopen ("diamant.in", "r");
	FILE *fout = fopen ("diamant.out", "w");
	int sMax = 0, i, j, k, m, n, x, ii = 1;
	fscanf (fin, "%d %d %d", &m, &n, &x);
	mat[0][DELTA] = 1;
	for (i = 1; i <= m; ++i) {
		for (j = 1; j <= n; ++j) {
			int c = i * j;
			sMax += c;
			for (k = -sMax; k <= sMax; ++k) {
				mat[ii][k + DELTA] = (mat[!ii][k + DELTA] + mat[!ii][k + c + DELTA] + mat[!ii][k - c + DELTA]) % MOD;
			}
			ii ^= 1;
		}
	}
	if (x > sMax || x < -sMax) {
		fprintf (fout, "0\n");
	} else {
		fprintf (fout, "%d\n", mat[!ii][x + DELTA]);
	}
	fclose(fout);
	return 0;
}