Pagini recente » Cod sursa (job #621506) | Cod sursa (job #93707) | Cod sursa (job #875318) | Cod sursa (job #3248683) | Cod sursa (job #1290193)
#include <fstream>
#define mod 194767
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;
//int i;
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)
{
if(temp->sum+(N-n+2)*(N-n+3)/2>s)
create_tree(temp->left,n);
if(temp->sum-(N-n+2)*(N-n+3)/2<s)
create_tree(temp->right,n);
}
if(n==N)
{
if(temp->left->sum==s)
nr=(nr+1)%mod;
if(temp->right->sum==s)
nr=(nr+1)%mod;
}
}
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;
}