Pagini recente » Cod sursa (job #1894956) | Cod sursa (job #499143) | Cod sursa (job #1444344) | Cod sursa (job #3336516) | Cod sursa (job #3325015)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
int n;
int bit[30005];
int ans[30005];
int a[30005];
void update(int i, int v)
{
for (; i <= n; i += i & -i)
bit[i] += v;
}
int find_kth(int k)
{
int pos = 0;
int pw = 1 << 15;
while (pw)
{
if (pos + pw <= n && bit[pos + pw] < k)
{
k -= bit[pos + pw];
pos += pw;
}
pw >>= 1;
}
return pos + 1;
}
int main()
{
fin >> n;
for (int i = 1; i <= n; i++)
fin >> a[i];
for (int i = 1; i <= n; i++)
update(i, 1);
for (int i = n; i >= 1; i--)
{
int pos = find_kth(a[i]);
ans[pos] = i;
update(pos, -1);
}
for (int i = 1; i <= n; i++)
fout << ans[i] << "\n";
return 0;
}