Cod sursa(job #47085)

Utilizator marius135Dumitran Adrian Marius marius135 Data 3 aprilie 2007 12:34:14
Problema Schi Scor 65
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<stdio.h>
#define max 32*1024

long v[max];
long st[max];
long dr[max];
long valdr[max],next=1;

void adauga(long a,long b,long c)
{
	if(a==1) {v[1] = a;return;}
	if(v[b] == 0) {v[b] = a; return;}
	if(valdr[b] >= c) 
		{
		if(dr[b]==0) dr[b]=++next;
		valdr[b]++;
		adauga(a,dr[b],c);
		return;
		}
	if(st[b]==0) st[b]=++next;
	adauga(a,st[b],c-valdr[b]-1);
	
}

void drs(long a)
{
	if(v[a]==0) return;
	drs(dr[a]);
	printf("%ld\n",v[a]);
	drs(st[a]);
}
int main()
{
	long i,n,x;
	freopen("schi.in","r",stdin);
	freopen("schi.out","w",stdout);
	
	scanf("%ld",&n);
	for(i=1;i<=n;i++)
		{
		scanf("%ld",&x);
		adauga(i,1,x-1);
		}
	i++;
	
	drs(1);
		
	
	
	
	return 0;
}