Pagini recente » Cod sursa (job #2416594) | Cod sursa (job #2827709) | Cod sursa (job #1883439) | Cod sursa (job #3223322) | Cod sursa (job #3273793)
#include <bits/stdc++.h>
#define cin ci
#define cout co
using namespace std;
ifstream cin("schi.in");
ofstream cout("schi.out");
int n, x;
vector<int> aib, v, ans;
void update(int node, int val)
{
for(; node <= n; node += node & (-node))
aib[node] += val;
}
int bs(int val)
{
int ans = 0, csum = 0;
for(int step = (1 << 15); step > 0; step /= 2)
if(ans + step <= n && csum + aib[ans + step] < val)
{
ans += step;
csum += aib[ans];
}
return ans + 1;
}
int main()
{
cin >> n;
aib.assign(n+1, 0);
v.resize(n+1);
ans.resize(n+1);
for(int i = 1; i <= n; i++)
{
cin >> v[i];
update(i, 1);
}
for(int i = n; i >= 1; i--)
{
x = bs(v[i]);
update(x, -1);
ans[x] = i;
}
for(int i = 1; i <= n; i++)
cout << ans[i] << '\n';
return 0;
}