Cod sursa(job #2926226)

Utilizator lolismekAlex Jerpelea lolismek Data 17 octombrie 2022 12:11:10
Problema 1-sir Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;

ifstream fin("1-sir.in");
ofstream fout("1-sir.out");

const int N = 256, S = 32896, mod = 194767;
int dp[2][S + 1];

int main(){

	int n, s;
	fin >> n >> s;

	if(n * (n - 1) / 2 < abs(s)){
		fout << 0 << '\n';
		return 0;
	}

	dp[1][0] = 1;

	for(int i = 1; i < n; i++){
		for(int sum = 0; sum <= i * (i + 1) / 2; sum++)
			dp[1 - (i & 1)][sum] = (dp[i & 1][abs(sum + i)] + dp[i & 1][abs(sum - i)]) % mod;
	}

	fout << dp[n & 1][abs(s)] << '\n';

	return 0;
}

// sirul se reduce la o forma mai simpla, astfel, la pasul i, ori adunam, ori scadem (i - 1)