Pagini recente » Cod sursa (job #2703725) | Cod sursa (job #612542) | Cod sursa (job #2604905) | Cod sursa (job #1438654) | Cod sursa (job #1774815)
#include <bits/stdc++.h>
#define maxN 30002
using namespace std;
int n, v[maxN], ai[maxN * 4], winners[maxN];
void update(int node, int l, int r, int pos, int i)
{
int lson = 2 * node, rson = 2 * node + 1;
if (l == r)
{
ai[node] = 1;
winners[l] = i;
return ;
}
int 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];
}
void read()
{
int i;
freopen("schi.in", "r", stdin);
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);
}
void write()
{
int i;
freopen("schi.out", "w", stdout);
for (i = 1; i <= n; ++ i)
printf("%d\n", winners[i]);
}
int main()
{
read();
write();
return 0;
}