Cod sursa(job #2926224)

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

using namespace std;

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

const int N = 256, S = 32640, mod = 194676;
int dp[2][S + 1];

int main(){

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

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

	int flag = 0;
	dp[flag][0] = 1;

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

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

	return 0;
}

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