Pagini recente » Cod sursa (job #1193374) | Cod sursa (job #1537464) | Cod sursa (job #548833) | Cod sursa (job #179745) | Cod sursa (job #810018)
Cod sursa(job #810018)
#include<stdio.h>
#include<string>
#include<iostream>
#include<stdlib.h>
#include<cstdlib>
#include <sstream>
using namespace std;
#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 = 0;
while( cate[i] < x)
x-= cate[i++];
i = (i<<7);
while(x)
if( nr[i++] == 1)
--x;
return i - 1;
}
inline 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/size + 1;
for( int i = 1; i <= N; ++i){
nr[i] = 1;
scanf("%d", &V[i]);
}
for( int i = 0; i <= bucket_nr; ++i)
cate[i] = size;
cate[0]--;
for( int i = N; i >= 1; --i) {
int x = afla(V[i]);
poz[x] = i;
scoate(x);
}
string a;
for( int i = 1; i <= N; ++i) {
int rev = 0;
while(poz[i]) {
rev = rev * 10 + poz[i]% 10;
poz[i]/= 10;
}
while(rev) {
a += (rev%10 +'0');
rev/= 10;
}
a += "\n";
}
cout<<a;
return 0;
}