Pagini recente » Cod sursa (job #489548) | Cod sursa (job #849445) | Cod sursa (job #302779) | Cod sursa (job #2047503) | Cod sursa (job #2010812)
#include <bits/stdc++.h>
#define Nmax 30001
using namespace std;
ifstream f("schi.in");
ofstream g("schi.out");
int v[Nmax];
int r[Nmax];
int arb[4*Nmax];
int poz,sol;
void update(int nod, int p, int q)
{
if(p==q)
arb[nod]=1;
else
{
int m=(p+q)/2;
if(poz<=m)
update(2*nod,p,m);
else update(2*nod+1,m+1,q);
arb[nod]=arb[2*nod]+arb[2*nod+1];
}
}
void querry(int nod, int p, int q, int val)
{
if(p==q)
{
sol=p;
arb[nod]=0;
}
else
{
int m=(p+q)/2;
if(val<=arb[2*nod])
querry(2*nod,p,m,val);
else
querry(2*nod+1,m+1,q,val-arb[2*nod]);
arb[nod]=arb[2*nod]+arb[2*nod+1];
}
}
int main()
{
int n,i;
f>>n;
for(i=1;i<=n;i++)
{
f>>v[i];
poz=i;
update(1,1,n);
}
for(i=n;i;i--)
{
querry(1,1,n,v[i]);
r[sol]=i;
}
for(i=1;i<=n;i++)
g<<r[i]<<'\n';
return 0;
}