Pagini recente » Cod sursa (job #1236350) | Cod sursa (job #1367705) | Cod sursa (job #2129919)
#include <bits/stdc++.h>
using namespace std;
int n;
int ai[120010],v[30010],r[30010];
void build(int o, int a, int b){
if (a==b) {ai[o]=1;return;}
int m=(a+b)/2;
build(o*2,a,m);
build(o*2+1,m+1,b);
ai[o]=ai[o*2]+ai[o*2+1];
}
int cauta(int o, int a, int b, int p){
if (a==b) {
ai[o]=0;
return a;
}
int m=(a+b)/2,x;
if (p<=ai[o*2]) x=cauta(o*2,a,m,p);
else x=cauta(o*2+1,m+1,b,p-ai[o*2]);
ai[o]=ai[o*2]+ai[o*2+1];
return x;
}
int main()
{
freopen("schi.in","r",stdin);
freopen("schi.out","w",stdout);
int i;
scanf("%d",&n);
for (i=1;i<=n;i++) scanf("%d",&v[i]);
build(1,1,n);
for (i=n;i;i--){
r[cauta(1,1,n,v[i])]=i;
}
for (i=1;i<=n;i++) printf("%d\n",r[i]);
return 0;
}