Pagini recente » Cod sursa (job #2161395) | Cod sursa (job #2090381) | Cod sursa (job #1892986) | Diferente pentru implica-te/arhiva-educationala intre reviziile 68 si 67 | Cod sursa (job #1988766)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
const int nMax = 260;
const int sMax = (nMax * (nMax - 1)) / 2;
const int MOD = 194767;
int n, s;
int dp[2][sMax];
void citire()
{
ifstream in("1-sir.in");
in >> n >> s;
in.close();
}
void rezolvare()
{
ofstream out("1-sir.out");
s = abs(s);
if(s > n * (n-1) / 2)
{
out << 0;
return;
}
s = n * (n - 1) / 2 - s;
if(s % 2 != 0)
{
out << 0;
return;
}
s /= 2;
--n;
int current = 0, last = 1;
dp[current][1] = dp[current][0] = 1;
for(int i = 2; i <= n; ++i)
{
swap(current, last);
for(int j = 0; j <= s; ++j)
{
dp[current][j] = dp[last][j];
if(j - i >= 0)
dp[current][j] = (dp[current][j] + dp[last][j-i]) % MOD;
}
}
out << dp[current][s];
}
int main()
{
citire();
rezolvare();
return 0;
}