Pagini recente » Cod sursa (job #387872) | Cod sursa (job #844970) | Cod sursa (job #2530045) | Cod sursa (job #921806) | Cod sursa (job #2445759)
#include <iostream>
#include <algorithm>
#include <vector>
#include <map>
#include <cstdio>
using namespace std;
map<pair<int, int>, int> solutions;
int max(int n)
{
return (n * (n - 1)) >> 1;
}
int solve(int n, int s)
{
if (s < 0)
return solve(n, -s);
pair<int, int> ns = make_pair(n, s);
if (solutions[ns])
return solutions[ns];
int m = max(n);
if (m < s)
return 0;
if (m == s)
return 1;
--n;
solutions[ns] = solve(n, s - n) + solve(n, s + n);
return solutions[ns];
}
int main()
{
freopen("1-sir.in", "r", stdin);
freopen("1-sir.out", "w", stdout);
int n, s;
cin >> n >> s;
cout << solve(n, s);
return 0;
}