Pagini recente » Cod sursa (job #3174587) | Cod sursa (job #692270) | Cod sursa (job #2662669) | Cod sursa (job #1112750) | Cod sursa (job #2750686)
#include <iostream>
#include <cstring>
#include <fstream>
#include <map>
#include <cmath>
#include <unordered_map>
using namespace std;
const int mod = 194767;
int solve(int S, int N)
{
const int smax = 40000;
int dp[smax][2];
memset(dp, 0, sizeof(dp));
dp[0][0] = 1;
int nxt = 1;
int smaxim = (N * (N - 1)) / 2;
if(abs(S) > smaxim)
return 0;
for(int i = 2;i <= N;++i)
{
int lim = (i * (i - 1)) / 2;
for(int j = 0;j <= lim;++j)
{
dp[j][nxt] = dp[abs(j - i + 1)][nxt ^ 1] + dp[j + i - 1][nxt ^ 1];
if(dp[j][nxt] >= mod)
dp[j][nxt] -= mod;
}
nxt ^= 1;
}
return dp[abs(S)][nxt ^ 1];
}
int main() {
ifstream in("1-sir.in");
ofstream out("1-sir.out");
int N, S;
cin >> N >> S;
cout << solve(S, N) << "\n";
in.close();
out.close();
return 0;
}