Pagini recente » Cod sursa (job #1422532) | Cod sursa (job #1421234) | Cod sursa (job #3363981) | Cod sursa (job #3363999) | Cod sursa (job #3363964)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream cin ("schi.in");
ofstream cout ("schi.out");
int n;
int pos[30005];
int ans[30005];
int aib[30005];
void update(int idx,int val) {
while (idx<=n) {
aib[idx]+=val;
idx+=idx & (-idx);
}
}
int find_kth(int k) {
int current_pos=0;
for (int step=1<<14; step>0; step>>=1) {
if (current_pos+step<=n && aib[current_pos+step]<k) {
current_pos+=step;
k-=aib[current_pos];
}
}
return current_pos+1;
}
int main() {
cin>>n;
for (int i=1; i<=n; i++) {
cin>>pos[i];
update(i,1);
}
for (int i=n; i>=1; i--) {
int final_pos=find_kth(pos[i]);
ans[final_pos]=i;
update(final_pos,-1);
}
for (int i=1; i<=n; i++) {
cout<<ans[i]<<'\n';
}
}