Pagini recente » Cod sursa (job #2320104) | Cod sursa (job #900970) | Cod sursa (job #1250992) | Cod sursa (job #2927692) | Cod sursa (job #185734)
Cod sursa(job #185734)
#include <stdio.h>
#include <stdlib.h>
#define lmax 65536
#define nmax 32768
#define left (i<<1)
#define right ((i<<1)|1)
#define mij ((a+b)>>1)
int H[lmax];
int n,sol[nmax],A[nmax];
int init(int i,int a,int b){
if(a>b)
return 0;
if(a==b)
H[i]=1;
else
H[i]=init(left,a,mij)+init(right,mij+1,b);
return H[i];
}
int query(int i,int a,int b,int x){
--H[i];
if(a==b)
return a;
if(H[left]>=x)
return query(left,a,mij,x);
else
return query(right,mij+1,b,x-H[left]);
}
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]);
init(1,1,n);
for(i=n;i;i--)
sol[query(1,1,n,A[i])]=i;
for (i=1;i<=n;++i)
printf("%d\n",sol[i]);
return 0;
}