Cod sursa(job #2093923)

Utilizator oldatlantianSerban Cercelescu oldatlantian Data 24 decembrie 2017 17:04:38
Problema 1-sir Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <bits/stdc++.h>
using namespace std;

#ifndef HOME
ifstream fi("1-sir.in");
ofstream fo("1-sir.out");
#else
ifstream fi("sir.in");
ofstream fo("sir.out");
#endif

const int N = 256 * 256, MOD = 194767;

int dp[2][N];

int n, s;

static void fix_mod(int &x) {
	if (x < 0) x+= MOD;
	if (x > MOD) x-= MOD; }

int main() {
	fi >> n >> s;

	s = abs(s);
	if (n * (n + 1) < s || n % 2 != s % 2) {
		fo << "0\n";
		return 0; }

	dp[1][0] = 1;
	for (int i = 2; i <= n; ++i) {
		swap(dp[0], dp[1]); 
		for (int t, j = 0; j <= i * (i - 1) / 2; ++j)
			dp[1][j] = dp[0][abs(i + j - 1)] + dp[0][abs(i - j - 1)], fix_mod(dp[1][j]); }

	fo << dp[1][s] << endl;

	return 0; }