Pagini recente » Cod sursa (job #2279279) | Cod sursa (job #205955) | Cod sursa (job #1981487) | Cod sursa (job #685769) | Cod sursa (job #1804828)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("1-sir.in");
ofstream out("1-sir.out");
const int mod = 194767;
const int maxs = 35000;
const int maxn = 270;
int dp[2][maxs * 2][maxn * 2];
int main()
{
int n, S;
in >> n >> S;
int smax = n * (n + 1) / 2;
if(S > smax || S < -smax)
{
out << 0 << "\n";
return 0;
}
dp[1][maxs][maxn] = 1;
for(int i = 2; i <= n; i++)
{
int p = i % 2;
for(int s = -smax; s <= smax; s++)
{
for(int j = - (i - 1); j <= i - 1; j++)
{
dp[p][s + maxs + j - 1][maxn + j - 1] += dp[1 - p][s + maxs][j + maxn];
dp[p][s + maxs + j - 1][maxn + j - 1] %= mod;
dp[p][s + maxs + j + 1][maxn + j + 1] += dp[1 - p][s + maxs][j + maxn];
dp[p][s + maxs + j + 1][maxn + j + 1] %= mod;
}
}
}
int nr = 0;
for(int i = -n; i <= n; i++)
nr = (nr + dp[n % 2][S + maxs][maxn + i]) % mod;
out << nr;
return 0;
}