Pagini recente » Cod sursa (job #2812435) | Cod sursa (job #1595013) | Cod sursa (job #1059900) | Cod sursa (job #2971700) | Cod sursa (job #212622)
Cod sursa(job #212622)
#include <cstdio>
#define MAX_N 30005
int N;
int V[MAX_N], Sol[MAX_N];
int Tree[4 * MAX_N];
int val,poz;
void update(int nod, int li, int lf)
{
if(li == lf)
{
Tree[nod] = 1;
return;
}
int mij = (li + lf) >> 1;
update(2*nod, li, mij);
update(2*nod + 1, mij + 1, lf);
Tree[nod] = Tree[2*nod] + Tree[2*nod + 1];
}
void querry(int nod, int li, int lf)
{
if(li == lf)
{
Sol[li] = val;
Tree[nod] = 0;
return;
}
int mij = (li + lf) >> 1;
if(poz <= Tree[2*nod])
querry(2*nod, li, mij);
else
poz -= Tree[2*nod], querry(2*nod + 1, mij + 1, lf);
Tree[nod] = Tree[2*nod] + Tree[2*nod + 1];
}
void citire()
{
scanf("%d",&N);
for(int i = 1; i <= N; ++i)
scanf("%d",V+i);
}
void solve()
{
update(1,1,N);
for(int i = N; i >= 1; --i)
{
val = i;
poz = V[i];
querry(1,1,N);
}
for(int i = 1; i <= N; ++i)
printf("%d\n",Sol[i]);
}
int main()
{
freopen("schi.in","rt",stdin);
freopen("schi.out","wt",stdout);
citire();
solve();
}