Pagini recente » Cod sursa (job #750406) | Cod sursa (job #1481650) | Cod sursa (job #1344589) | Cod sursa (job #2919331) | Cod sursa (job #36046)
Cod sursa(job #36046)
#include <stdio.h>
#define MAXN 30005
int N;
short x[MAXN], y[MAXN], aib[MAXN];
inline int query( int poz )
{
int rez = 0;
for (; poz; poz -= (poz ^ (poz - 1)) & poz)
rez += (int)aib[poz];
return rez;
}
inline void update( int poz, int val )
{
for (; poz <= N; poz += (poz ^ (poz - 1)) & poz)
aib[poz] += val;
}
int main()
{
freopen("schi.in", "rt", stdin);
freopen("schi.out", "wt", stdout);
scanf("%d", &N);
for (int i = 0; i < N; i++)
{
scanf("%hd", x + i);
update( i + 1, 1 );
}
for (int i = N - 1; i >= 0; i--)
{
int k, step;
for (k = 0, step = 16384; step; step >>= 1)
if (k + step <= N && query(k + step) < x[i])
k += step;
y[k + 1] = i;
update( k + 1, -1 );
}
for (int i = 1; i <= N; i++)
printf("%d\n", y[i] + 1);
return 0;
}