Cod sursa(job #34765)

Utilizator TYTUSVlad Saveluc TYTUS Data 21 martie 2007 12:59:47
Problema 1-sir Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <cstdio>
#include <cstring>
using namespace std;

const int MOD = 194767;
const int DELTA = 34000;

int mat[2][2 * DELTA];

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