Pagini recente » Cod sursa (job #354985) | Statisticile problemei Electrica | Cod sursa (job #3172398) | Cod sursa (job #392443) | Cod sursa (job #49983)
Cod sursa(job #49983)
#include <stdio.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=new(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=new(NOD);
p=p->st; }
else {
p->dr=new(NOD);
p=p->dr; }
p->val=i;
p->fii=0;
p->st=NULL;
p->dr=NULL; }
afiseaza(r);
return 0; }