Pagini recente » Cod sursa (job #2501633) | Cod sursa (job #48861)
Cod sursa(job #48861)
#include <stdio.h>
#define maxn 30010
#define maxx 65536
int n,l,x,y;
int a[maxn],sol[maxn];
int c[maxx];
void update(int p,int r,int nod)
{
if (p==r)
{
c[nod]=0;
sol[p]=y;
}
else {
int q=(p+r)/2;
if (x<=c[nod*2]) update(p,q,nod*2);
else {
x-=c[nod*2];
update(q+1,r,nod*2+1);
}
c[nod]=c[nod*2]+c[nod*2+1];
}
}
int main()
{
freopen("schi.in","r",stdin);
freopen("schi.out","w",stdout);
scanf("%d ",&n);
int i;
for (i=1;i<=n;i++) scanf("%d ",&a[i]);
for (l=1;l<n;l<<=1);
for (i=l;i<n+l;i++) c[i]=1;
for (i=l-1;i>0;i--) c[i]=c[i*2]+c[i*2+1];
for (i=n;i>0;i--)
{
x=a[i];
y=i;
update(1,l,1);
}
for (i=1;i<=n;i++) printf("%d\n",sol[i]);
return 0;
}