Pagini recente » Cod sursa (job #1177655) | Cod sursa (job #1069772) | Cod sursa (job #939065) | Cod sursa (job #1311612) | Cod sursa (job #1847683)
#include <iostream>
#define in "schi.in"
#define out "schi.out"
#define maxn 30005
struct tree {
tree *left;
tree *right;
int st;
int dr;
int position;
};
int rez[maxn];
int add[maxn*4];
void updateTree(int node, int l, int r, int member, int pos) {
if (l == r) {
add[node] = 1;
rez[l] = member;
return;
}
int mid = (l+r) / 2;
int p = add[2*node];
if (mid-p >= pos) {
updateTree(2*node, l, mid, member, pos);
} else {
updateTree(2*node+1, mid+1, r, member, pos+p);
}
add[node] = add[2*node] + add[2*node+1];
}
int main() {
freopen(in, "r", stdin);
freopen(out, "w", stdout);
int N;
scanf("%d", &N);
int v[maxn];
for (int i=1; i<=N; i++) {
scanf("%d", &v[i]);
}
for (int i =N; i>0; --i) {
updateTree(1,1, N, i, v[i]);
}
for (int i=1; i<=N; i++) {
printf("%d\n", rez[i]);
}
return 0;
}