Pagini recente » Cod sursa (job #1151961) | Cod sursa (job #442497) | Cod sursa (job #2708673) | Cod sursa (job #279778) | Cod sursa (job #170907)
Cod sursa(job #170907)
#include <stdio.h>
#define NX 30010
int N, mask, v[ NX ], T[ NX ], f[ NX ];
void cit() {
int i;
scanf( "%d", &N );
for( i = 1; i <= N; i++ )
scanf( "%d", v + i );
}
void upd( int x, int y ) {
for( ; x <= N; x += (-x & x) )
T[ x ] += y;
}
int get( int x ) {
int m, i;
for( i = 0, m = mask; m; m >>= 1 )
if( ( i+m <= N ) && (T[ i+m ] <= x) )
i += m, x -= T[i];
return i;
}
void rez() {
int i, p;
for( i = 1; i <= N; i++ )
upd( i, 1 );
for( mask = 1; mask <= N; mask <<= 1 );
mask >>= 1;
for( i = N; i; i-- ) {
p = get( v[i] - 1 ) + 1;
f[p] = i;
upd( p, -1 );
}
}
void scr() {
int i;
for( i = 1; i <= N; i++ )
printf( "%d\n", f[i] );
}
int main() {
freopen( "schi.in", "r", stdin );
freopen( "schi.out", "w", stdout );
cit();
rez();
scr();
return 0;
}