Pagini recente » Cod sursa (job #1853754) | Cod sursa (job #1596929) | Cod sursa (job #1925705) | Cod sursa (job #2006921) | Cod sursa (job #809949)
Cod sursa(job #809949)
#include<stdio.h>
#define size 128
#define maxn 30001
int nr[maxn], cate[maxn], poz[maxn], N, V[maxn];
int bucket_nr;
int afla(int x) {
int i;
for( i = 0; i <= bucket_nr; ++i) {
if( cate[i] < x)
x-= cate[i];
else break;
}
for( i = i * size;; i++) {
if( nr[i] == 1)
x--;
if( x == 0) return i;
}
}
void scoate(int val) {
nr[val] = 0;
cate[val>>7]--;
}
int main() {
freopen("schi.in", "r", stdin);
freopen("schi.out", "w", stdout);
scanf("%d", &N);
bucket_nr = maxn>>7 + 1;
for( int i = 1; i <= N; ++i){
nr[i] = 1;
cate[i>>7]++;
scanf("%d", &V[i]);
}
for( int i = N; i >= 1; --i) {
int x = afla(V[i]);
poz[x] = i;
scoate(x);
}
for( int i = 1; i <= N; ++i)
printf("%d\n", poz[i]);
return 0;
}