Pagini recente » Cod sursa (job #605521) | Cod sursa (job #1759402) | Cod sursa (job #228641) | Cod sursa (job #1693393) | Cod sursa (job #1022646)
#include<stdio.h>
int n,val,poz;
int a[120002],sol[30002],v[30002];
inline void update(int l,int r,int x)
{
v[x]=r-l+1;
if(l>=r)
return;
int med=(l+r)/2;
update(l,med,2*x);
update(med+1,r,2*x+1);
}
inline void query(int l,int r,int x)
{
if(l==r)
{
poz=l;
v[x]=0;
return;
}
int med=(l+r)/2;
if(v[2*x]<val)
{
val-=v[2*x];
query(med+1,r,2*x+1);
}
else
query(l,med,2*x);
--v[x];
}
int main()
{
freopen("schi.in","r",stdin);
freopen("schi.out","w",stdout);
int i;
scanf("%d",&n);
update(1,n,1);
for(i=1;i<=n;++i)
scanf("%d",&a[i]);
for(i=n;i>=1;--i)
{
val=a[i];
query(1,n,1);
sol[poz]=i;
}
for(i=1;i<=n;++i)
printf("%d\n",sol[i]);
return 0;
}