Pagini recente » Cod sursa (job #1738353) | Cod sursa (job #481092) | Cod sursa (job #2747553) | Cod sursa (job #786075) | Cod sursa (job #1808656)
#include <cstdio>
using namespace std;
int pos, n, Arb[120005], Sol[120005], x[120005];
inline void Update(int st ,int dr, int nod, int i, int pos){
if(st == dr){
Arb[nod] = 1;
Sol[st] = i;
return ;
}
int mij = (st + dr) / 2;
if(mij - st + 1 - Arb[nod * 2] >= pos) Update(st, mij, nod * 2, i, pos);
else Update(mij + 1, dr, nod * 2 + 1, i, pos - (mij - st + 1 - Arb[nod * 2]));
Arb[nod] = Arb[nod * 2] + Arb[nod * 2 + 1];
}
int main()
{
freopen("schi.in", "r", stdin);
freopen("schi.out", "w", stdout);
scanf("%d", &n);
for(int i = 1; i <= n ; ++i)
scanf("%d", &x[i]);
for(int i = n; i >= 1 ; --i){
Update(1, n, 1, i, x[i]);
}
for(int i = 1; i <= n ; ++i)
printf("%d\n", Sol[i]);
return 0;
}