Pagini recente » Cod sursa (job #123665) | Cod sursa (job #2823609) | Cod sursa (job #2299131) | Cod sursa (job #2589616) | Cod sursa (job #932305)
Cod sursa(job #932305)
#include<cstdio>
int n,pow,A[70010],i,V[30010],SOL[30010],query(int,int,int,int);
int main()
{
freopen("schi.in","r",stdin);
freopen("schi.out","w",stdout);
scanf("%d",&n);
for(pow=2;pow<n;pow<<=1);
for(i=1;i<=n;i++)scanf("%d",&V[i]);
for(i=pow;i<pow+n;i++)A[i]=1;
for(i=pow-1;i>=1;i--)A[i]=A[i+i]+A[i+i+1];
for(i=n;i>=1;i--)
SOL[query(1,1,pow,V[i])]=i;
for(i=1;i<=n;i++)printf("%d\n",SOL[i]);
return 0;
}
int query(int p,int X,int Y,int val)
{
--A[p];
if(X==Y)return X;
if(val<=A[p+p])return query(p+p,X,(X+Y)/2,val); else return query(p+p+1,(X+Y)/2+1,Y,val-A[p+p]);
}