Pagini recente » Cod sursa (job #767277) | Cod sursa (job #1772734) | Cod sursa (job #590748) | Cod sursa (job #2033154) | Cod sursa (job #1148117)
#include<cstdio>
using namespace std;
const int NMAX = 30005;
int N,i,poz,P[NMAX],AIB[NMAX],Sol[NMAX];
void Update(int poz,int val)
{
for(int i=poz;i<=N;i+=i&(-i))
AIB[i]+=val;
}
int Query(int x)
{
int r=0;
for(int step=1<<15;step;step>>=1)
if(r+step<=N && AIB[r+step]<x)
r+=step, x-=AIB[r];
return r+1;
}
int main()
{
freopen("schi.in","r",stdin);
freopen("schi.out","w",stdout);
scanf("%d",&N);
for(i=1;i<=N;i++) Update(i,1);
for(i=1;i<=N;i++) scanf("%d",&P[i]);
for(i=N;i;i--)
{
poz=Query(P[i]);
Sol[poz]=i;
Update(poz,-1);
}
for(i=1;i<=N;i++) printf("%d\n",Sol[i]);
return 0;
}