Pagini recente » Cod sursa (job #2202668) | Sandbox (cutiuţa cu năsip) | Cod sursa (job #2482397) | Cod sursa (job #1750159) | Cod sursa (job #569296)
Cod sursa(job #569296)
#include <cstdio>
const int N = 30005;
int n, a[N], ai[4 * N], rez[N];
void read() {
freopen("schi.in", "r", stdin);
freopen("schi.out", "w", stdout);
scanf("%d", &n);
for (int i = 1; i <= n; ++ i)
scanf("%d", &a[i]);
}
void init(int nod, int p, int u) {
if (p == u) {
ai[nod] = 1;
return;
}
int m = (p + u) / 2;
init(2 * nod, p, m);
init(2 * nod + 1, m + 1, u);
ai[nod] = ai[2 * nod] + ai[2 * nod + 1];
}
int query(int nod, int p, int u, int val) {
ai[nod] --;
if (p == u)
return p;
int m = (p + u) / 2;
if (ai[2 * nod] >= val)
return query(2 * nod, p, m, val);
return query(2 * nod + 1, m + 1, u, val - ai[2 * nod]);
}
void solve() {
int poz;
for (int i = n; i >= 1; -- i) {
poz = query(1, 1, n, a[i]);
rez[poz] = i;
}
}
void afis() {
for (int i = 1; i <= n; ++ i)
printf("%d\n", rez[i]);
}
int main() {
read();
init(1, 1, n);
solve();
afis();
return 0;
}