Pagini recente » Probleme de Taietura | Autentificare | Istoria paginii runda/simulare_oni_10_z1_2k13/clasament | Istoria paginii runda/nu_mai_suntem_o_echipa/clasament | Cod sursa (job #1290168)
#include <fstream>
using namespace std;
ifstream x ("1-sir.in");
ofstream y ("1-sir.out");
struct node
{
int level;
int sum;
int last;
node *parent;
node *right;
node *left;
};
int N,s;
int nr;
void create_tree(node *temp, int n)
{
n++;
node *current;
current=new node();
current->level=n;
current->sum=temp->sum+temp->last-1;
current->last=temp->last-1;
current->parent=temp;
current->left=NULL;
current->right=NULL;
temp->left=current;
current=new node();
current->level=n;
current->sum=temp->sum+temp->last+1;
current->last=temp->last+1;
current->parent=temp;
current->left=NULL;
current->right=NULL;
temp->right=current;
if(n<N)
{
create_tree(temp->left,n);
create_tree(temp->right,n);
}
if(n==N)
{
if(temp->left->sum==s)
nr++;
if(temp->right->sum==s)
nr++;
}
}
void FirstAssigment()
{
node *head;
node *current;
head=new node();
current=new node();
head->level=1;
head->sum=0;
head->last=0;
head->parent=NULL;
head->left=NULL;
head->right=NULL;
current=head;
create_tree(head,1);
y<<nr<<'\n';
}
int main()
{
x>>N>>s;
FirstAssigment();
return 0;
}