Pagini recente » Cod sursa (job #431829) | Cod sursa (job #2652771) | Cod sursa (job #122299) | Cod sursa (job #2856762) | Cod sursa (job #2507932)
#include <bits/stdc++.h>
#include <cmath>
using namespace std;
struct node {
long long value;
node* left;
node* right;
} root_sums, root_values;
long long n, s, nrsol = 0;
void genereaza(long long k, node* values_current, node* sums_current) {
if(k == n)
return;
values_current->left = (node*)malloc(sizeof(node));
values_current->right = (node*)malloc(sizeof(node));
sums_current->left = (node*)malloc(sizeof(node));
sums_current->right = (node*)malloc(sizeof(node));
values_current->left->value = values_current->value + 1;
values_current->right->value = values_current->value - 1;
sums_current->left->value = values_current->left->value + sums_current->value;
sums_current->right->value = values_current->right->value + sums_current->value;
if(k == n - 1 && sums_current->left->value == s)
nrsol++;
if(k == n - 1 && sums_current->right->value == s)
nrsol++;
genereaza(k + 1, values_current->left, sums_current->left);
genereaza(k + 1, values_current->right, sums_current->right);
}
ifstream fin("1-sir.in");
ofstream fout("1-sir.out");
int main() {
fin >> n >> s;
root_sums.value = 0;
root_values.value = 0;
genereaza(1, &root_values, &root_sums);
fout << nrsol;
}