Pagini recente » Cod sursa (job #212819) | Cod sursa (job #29200) | Cod sursa (job #673421) | Cod sursa (job #2342421) | Cod sursa (job #2748815)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
const int nmax = 3e4 + 5;
int n, v[nmax], aib[nmax], ans[nmax];
int bt(int x){
return x & (-x);
}
void update(int pos, int val){
for(int i = pos; i <= n; i += bt(i))
aib[i] += val;
}
void read(){
fin >> n;
for(int i = 1; i <= n; i++){
fin >> v[i];
update(i, 1);
}
}
int bs(int val){
int idx = 0, p = 1 << 20;
for(; p > 0; p /= 2)
if(idx + p <= n)
if(aib[idx + p] < val){
idx += p;
val -= aib[idx];
}
return idx + 1;
}
void solve(){
for(int i = n; i >= 1; i--){
int pos = bs(v[i]);
ans[pos] = i;
update(pos, -1);
//cout << i << " " << v[i] << " " << pos << "\n";
}
}
void print(){
for(int i = 1; i <= n; i++)
fout << ans[i] << "\n";
}
int main()
{
read();
solve();
print();
return 0;
}