Cod sursa(job #183274)

Utilizator paulDeac Adrian paul Data 21 aprilie 2008 21:38:13
Problema Schi Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<stdio.h>

#define in "schi.in"
#define out "schi.out"

struct nod{
	int inf;
	nod *next,*prev;
} *p,*v;

void add(int,int);

int main()
{
	freopen(in,"r",stdin);
	freopen(out,"w",stdout);
	int n,i,x;
	scanf("%d",&n);
	scanf("%d",&x);
	v=new nod;
	v->inf=1;
	v->next=0;
	v->prev=0;
	for(i=2;i<=n;i++)
	{
		scanf("%d",&x);
		add(x,i);
	}
	p=v;
	while(p)
	{
		printf("%d\n",p->inf);
		p=p->next;
	}
	return 0;
}
void add(int poz,int nr)
{
	p=v;
	while(poz>1 && p->next)
	{
		p=p->next;
		poz--;
	}
	if(poz>1)
	{
		nod *q=new nod;
		q->inf=nr;
		q->prev=p;
		q->next=0;
		p->next=q;
	}
	else
	{
		nod *q=new nod;
		q->inf=nr;
		q->next=p;
		if(p!=v)
		{
			q->prev=p->prev;
			p->prev->next=q;
		}
		p->prev=q;
		if(p==v)
			v=q;
	}
}