Pagini recente » Cod sursa (job #2240231) | Cod sursa (job #1177387) | Cod sursa (job #966625) | Cod sursa (job #478399) | Cod sursa (job #606852)
Cod sursa(job #606852)
#include <cstdio>
// ATENTIE LA CITIRE
#define nmax 30001
#define f "schi.in"
#define g "schi.out"
int t[nmax*4], v[nmax], n, m, sol[nmax];
void build(int nod, int st, int dr){
if (st == dr){
t[nod]=1;
return;
}
int mij = (st + dr)/2;
if (st <= mij) build(nod*2, st, mij);
if (dr > mij) build(nod*2+1, mij+1, dr);
t[nod]=t[nod*2] + t[nod*2+1];
}
int query(int nod, int st, int dr, int val){
t[nod]--;
if (st == dr){
return st;
}
int mij=(st + dr) / 2;
if (t[nod*2]>=val) query(nod*2, st, mij, val);
else query(nod*2+1, mij+1, dr, val - t[nod*2]);
}
int main(){
freopen(f,"r",stdin);
freopen(g,"w",stdout);
scanf("%d\n",&n);
for(int i=1; i<=n; i++){
scanf("%d\n",&v[i]);
}
build(1,1,n);
for(int i=n; i; i--){
sol[query(1, 1, n, v[i])]=i;
}
//printf("muie");
for(int i=1; i<=n; i++) printf("%d\n",sol[i]);
return 0;
}