Pagini recente » Cod sursa (job #187407) | Cod sursa (job #567597) | Cod sursa (job #21975) | Cod sursa (job #2710305) | Cod sursa (job #3248122)
#include <bits/stdc++.h>
using namespace std;
int v[30005];
int aib[60005];
int ans[60005];
int n;
void update(int i){
while(i <= n){
aib[i]++;
i += i&-i;
}
}
int query(int i){
int ret = 0;
while(i){
ret += aib[i];
i -= i&-i;
}
return ret;
}
int main()
{
ifstream cin("schi.in");
ofstream cout("schi.out");
cin >> n;
int s = 1;
for(int i = 1; i <= n; i++){
cin >> v[i];
}
for(int i = n; i >= 1; i--){
int st = 0, dr = 60000;
while(dr - st > 1){
int mij = (st+dr)/2;
int x = query(mij);
if(x + v[i] <= mij){
dr = mij;
}
else
st = mij;
}
update(dr);
ans[dr] = i;
}
int cnt = 0;
for(int i = 1; i <= 60000; i++){
if(ans[i]){
cout << ans[i] << '\n';
cnt++;
}
if(cnt == n)
break;
}
return 0;
}