Pagini recente » Cod sursa (job #863277) | Cod sursa (job #928686) | Cod sursa (job #1557734) | Cod sursa (job #573274) | Cod sursa (job #2926226)
#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)