Pagini recente » Cod sursa (job #326072) | Cod sursa (job #614268) | Cod sursa (job #2003299) | Cod sursa (job #3040809) | Cod sursa (job #2201774)
#include<bits/stdc++.h>
#define L 2*nod
#define R 2*nod+1
#define NMAX 30010
using namespace std;
int a[NMAX], s[NMAX], h[4*NMAX];
int n, poz, l, r, idx;
void update(int st, int dr, int nod, int poz, int idx) {
if (st==dr) {
h[nod] = 0;
s[st] = idx;
return;
}
int mid = st+dr >> 1;
if (poz<=h[L]) update(st, mid, L, poz, idx);
else update(mid+1, dr, R, poz-h[L], idx);
h[nod] = h[L] + h[R];
}
void build(int st, int dr, int nod) {
if (st==dr) {
h[nod] = 1; return;
}
int mid = st+dr >> 1;
build(st, mid, L);
build(mid+1, dr, R);
h[nod] = h[L] + h[R];
}
int main() {
ifstream cin("schi.in"); ofstream cout("schi.out");
cin>>n;
for (int i=1; i<=n; i++) cin>>a[i];
build(1,n,1);
for (int i=n; i; i--) update(1,n,1, a[i], i);
for (int i=1; i<=n; i++) cout<<s[i]<<'\n';
return 0;
}