Pagini recente » Poze finala preONI 2006 | Rating Raducanu George-Cristian (georgecristian2002) | Cod sursa (job #2873640) | Atasamentele paginii Clasament jc2015-runda1 | Cod sursa (job #49979)
Cod sursa(job #49979)
#include <stdio.h>
#include <alloc.h>
struct NOD { NOD *st, *dr; int val, fii; };
void afiseaza (NOD *nod) {
if (nod==NULL) return;
afiseaza(nod->st);
printf("%d\n", nod->val);
afiseaza(nod->dr); }
int main() {
NOD *r, *p;
int n, i, x, v;
freopen("schi.in", "r", stdin);
freopen("schi.out", "w", stdout);
scanf("%d", &n);
r=(NOD*)malloc(sizeof(NOD));
r->val=1;
r->st=NULL;
r->dr=NULL;
scanf("%d", &r->fii);
r->fii--;
for (i=2;i<=n;i++) {
scanf("%d", &x);
x--; p=r; v=r->fii;
while(1) {
if (x<=v) {
v-=p->fii;
p->fii++;
if (p->st!=NULL) {
p=p->st;
v+=p->fii; }
else {
x=0;
break; } }
else {
v++;
if (p->dr!=NULL)
p=p->dr;
else {
x=1;
break; } } }
if (x==0) {
p->st=(NOD*)malloc(sizeof(NOD));
p=p->st; }
else {
p->dr=(NOD*)malloc(sizeof(NOD));
p=p->dr; }
p->val=i;
p->fii=0;
p->st=NULL;
p->dr=NULL; }
afiseaza(r);
return 0; }