Pagini recente » Cod sursa (job #897092) | Cod sursa (job #1841552)
#include <bits/stdc++.h>
#define maxN 30005
using namespace std;
int i, n, v[maxN], ai[maxN * 4], win[maxN];
void update(int node, int l, int r, int pos, int i)
{
int mid, lson = 2 * node, rson = 2 * node + 1;
if (l == r)
{
ai[node] = 1;
win[l] = i;
return ;
}
mid = (l + r) / 2;
if (mid - l + 1 - ai[lson] >= pos)
update(lson, l, mid, pos, i);
else
update(rson, mid + 1, r, pos - (mid - l + 1 - ai[lson]), i);
ai[node] = ai[lson] + ai[rson];
}
int main()
{
freopen("schi.in", "r", stdin);
freopen("schi.out", "w", stdout);
scanf("%d", &n);
for (i = 1; i <= n; ++ i)
scanf("%d", &v[i]);
for (i = n; i >= 1; -- i)
update(1, 1, n, v[i], i);
for (i = 1; i <= n; ++ i)
printf("%d\n", win[i]);
return 0;
}