Cod sursa(job #2507932)

Utilizator SnokySlivilescu Vlad Snoky Data 11 decembrie 2019 09:08:38
Problema 1-sir Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.25 kb
#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;
}