Pagini recente » Cod sursa (job #494793) | Cod sursa (job #1911535) | Cod sursa (job #49340) | Cod sursa (job #1475977) | Cod sursa (job #36199)
Cod sursa(job #36199)
#include <stdio.h>
#define MN (32768)
int N, n[MN], aib_data[MN], poz[MN];
void set(int p)
{
for(; p < N+5; p += ~(p-1)&p)
++aib_data[p];
}
int get(int p)
{
int r = 0;
for(; p > 0; p -= ~(p-1)&p)
r += aib_data[p];
return r;
}
int main()
{
freopen("schi.in", "r", stdin);
freopen("schi.out", "w", stdout);
int i, op, np;
scanf("%d", &N);
for(i = 0; i < N; ++i)
scanf("%d", &n[i]);
for(i = N-1; i >= 0; --i) {
//scanf("%d", &op);
op = n[i];
for(np = op+get(op); ; ) {
int diff = get(np)-get(op);
if(diff > 0) {
op = np;
np += diff;
} else break;
}
poz[np] = i+1;
set(np);
}
for(i = 0; i <= N; ++i)
printf("%d ", poz[i]);
printf("\n");
return 0;
}