Pagini recente » Cod sursa (job #208541) | Cod sursa (job #491185) | Istoria paginii runda/16_februarie_simulare_oji_2024_clasa_9/clasament | Cod sursa (job #1069830) | Cod sursa (job #1520451)
#include <cstdio>
#include <algorithm>
using namespace std;
int v[30010], aib[30010], rez[30010], n;
inline void add (int poz, int val)
{
for (int i = poz; i <= n; i += i & (-i))
aib[i] += val;
}
inline int querry (int poz)
{
int rez = 0;
for (int i = poz; i; i -= i & (-i))
rez += aib[i];
return rez;
}
inline int cb (int x)
{
int a = 1, b = n;
while (a <= b)
{
int mid = (a + b) >> 1;
if (querry (mid) >= x) b = mid - 1;
else a = mid + 1;
}
return a;
}
int main ()
{
freopen ("schi.in", "r", stdin);
freopen ("schi.out", "w", stdout);
scanf ("%d", &n);
for (int i = 1; i <= n; ++i)
{
scanf ("%d", &v[i]);
add (i, 1);
}
for (int i = n; i; --i)
{
int x = cb (v[i]);
rez[x] = i;
add (x, -1);
}
for (int i = 1; i <= n; ++i)
printf ("%d\n", rez[i]);
return 0;
}