Cod sursa(job #757753)

Utilizator soriynSorin Rita soriyn Data 13 iunie 2012 13:23:10
Problema Schi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<fstream>
#define maxn 30005


int arb[maxn*4+65],sol[maxn];
int start,finish,pos,val,n;
using namespace std;

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

void update(int,int,int);
void query(int,int,int);
void read()
{
	in>>n;
	for(int i=1;i<=n;i++)
	{
		in>>val;
		pos=i;
		start=1,finish=i;
		update(1,1,n);
		query(1,1,n);
	}
}
		
		
void update(int nod,int left,int right)
{
	if(left==right && left<=finish && left>=start)
	{
		if(arb[nod]>=val)
		arb[nod]++;
		return;
	}
	
	int mij=(left+right)/2;
	if(start<=mij) update(2*nod,left,mij);
	if(mij<finish) update(2*nod+1,mij+1,right);
}

void query(int nod,int left,int right)
{
	if(left==right)
	{
		arb[nod]=val;
		return;
	}
	
	int mij=(left+right)/2;
	if(pos<=mij) query(2*nod,left,mij);
	else query(2*nod+1,mij+1,right);
}
	

int main()
{
	read();
	for(int i=n;i<=2*n-1;i++)
		sol[arb[i]]=i-n+1;
	for(int i=1;i<=n;i++)
		out<<sol[i]<<"\n";
	
}