Pagini recente » Cod sursa (job #1734225) | Cod sursa (job #1588616) | Cod sursa (job #2715993) | Cod sursa (job #932615) | Cod sursa (job #3158690)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("schi.in");
ofstream cout("schi.out");
const int NMAX = 30005;
int n;
vector<int> aint(4 * NMAX);
void build(int nod, int l, int r){
aint[nod] = r - l + 1;
if(l == r)
return;
const int mid = (l + r) / 2;
build(2 * nod, l, mid);
build(2 * nod + 1, mid+1, r);
}
int update(int nod, int l, int r, int pos){
aint[nod]--;
if(l == r){
return l;
}
const int mid = (l + r) / 2;
if(pos <= aint[2 * nod])
return update(2 * nod, l, mid, pos);
return update(2 * nod + 1, mid+1, r, pos - aint[2 * nod]);
}
int main(){
cin>>n;
build(1, 1, n);
vector<int> updates(n+1), output(n+1);
for(int i=1; i<=n; i++)
cin>>updates[i];
for(int i=n; i>=1; i--){
const int pos = update(1, 1, n, updates[i]);
output[pos] = i;
}
for(int i=1; i<=n; i++)
cout<<output[i]<<"\n";
return 0;
}