Pagini recente » Cod sursa (job #1610456) | Cod sursa (job #1318733) | Cod sursa (job #39694) | Cod sursa (job #1641894) | Cod sursa (job #757753)
Cod sursa(job #757753)
#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";
}