Pagini recente » Cod sursa (job #222347) | Cod sursa (job #1618350) | Cod sursa (job #2196046) | Cod sursa (job #2110411) | Cod sursa (job #2207668)
#include <bits/stdc++.h>
using namespace std;
#define L nod << 1
#define R L | 1
const int N = 30005;
int n, pos, val, b[N], a[4*N], c[N];
void update(int nod, int st, int dr){
if (st == dr){
a[nod] = 0;
c[st] = val;
return;
}
int mid = (st + dr) >> 1;
if (pos <= a[L]) update(L, st, mid);
else pos -= a[L], update(R, mid + 1, dr);
a[nod] = a[R] + a[L];
}
void build(int nod, int st, int dr){
if (st == dr){
a[nod] = 1;
return;
}
int mid = (st + dr) >> 1;
build(L, st, mid);
build(R, mid + 1, dr);
a[nod] = a[L] + a[R];
}
int main(){
ifstream cin ("schi.in");
ofstream cout ("schi.out");
cin >> n;
for (int i=1; i<=n; i++) cin >> b[i];
build(1, 1, n);
for (int i=n; i; i--){
pos = b[i];
val = i;
update(1, 1, n);
}
for (int i=1; i<=n; i++) cout << c[i] << "\n";
return 0;
}