Cod sursa(job #568267)

Utilizator HoriaClementHoriaC HoriaClement Data 30 martie 2011 23:44:24
Problema Schi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<fstream>

using namespace std;

ifstream in("schi.in");
ofstream out("schi.out");

int n,arb[120005],v[30005],x,reconstr[30005];

void mod(int nod,int p,int u)
{
	int m;
	if(p==u)
	{
		arb[nod]=1;
		return;
	}
	m=(p+u)>>1;
	mod(2*nod,p,m);
	mod(2*nod+1,m+1,u);
	arb[nod]=arb[2*nod]+arb[2*nod+1];
}

void query(int nod,int p,int u,int poz)
{
	int m;
	if(p==u)
	{
		x=p;
		arb[nod]=0;
		return ;
	}
	m=(p+u)>>1;
	if(arb[2*nod]>poz)
		query(nod*2,p,m,poz);
	else
		query(nod*2+1,m+1,u,poz-arb[2*nod]);
	arb[nod]=arb[2*nod]+arb[2*nod+1];
}	

void rez()
{
	in>>n;
	mod(1,1,n);
	for(int i=1;i<=n;++i)
		in>>v[i];
	for(int i=n;i;--i)
	{
		query(1,1,n,v[i]);
		reconstr[x]=i;
	}
	for(int i=1;i<=n;++i)
		out<<reconstr[i]<<"\n";
}

int main()
{
	rez();
	return 0;
}