Pagini recente » Cod sursa (job #1488241) | Cod sursa (job #1810524) | Cod sursa (job #1732753) | Cod sursa (job #2139325) | Cod sursa (job #3309763)
#include <bits/stdc++.h>
using namespace std;
const int N=30005;
int v[N], p[N], bit[N], n;
void update(int pos, int a){
while (pos<=n){
bit[pos]+=a;
pos+=pos&-pos;
}
}
int main()
{
freopen("schi.in", "r", stdin);
freopen("schi.out", "w", stdout);
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin>>n;
for (int i=1;i<=n;i++){
cin>>v[i];
update(i,1);
}
for (int j=n;j>=1;j--){
int idx=0,t=v[j],pow2=1<<15;
while (pow2){
int i=idx+pow2;
if (i<=n && bit[i]<t){
t-=bit[i];
idx=i;
}
pow2>>=1;
}
idx++;
update(idx, -1);
p[idx]=j;
}
for (int i=1;i<=n;i++){
cout<<p[i]<<'\n';
}
return 0;
}