Pagini recente » Cod sursa (job #82957) | Cod sursa (job #2823419) | Cod sursa (job #1816625) | Cod sursa (job #2315321) | Cod sursa (job #1324313)
#include <fstream>
using namespace std;
ifstream in("schi.in");
ofstream out("schi.out");
const int NMAX = 30000;
int arb[4*NMAX+1], p[NMAX+1], v[NMAX+1];
void update( int nod, int st, int dr, int poz, int val ) {
if( st == dr ) {
arb[nod] = 1;
p[dr] = val;
return ;
}
int mid = (st+dr)/2;
int fS = 2*nod, fD = 2*nod+1;
if( mid-st+1 - arb[fS] >= poz ) {
update( fS, st, mid, poz, val );
}
else {
update( fD, mid+1, dr, poz-mid+st-1 + arb[fS], val );
}
arb[nod] = arb[fS] + arb[fD];
}
int N;
int main()
{
in >> N;
for( int i = 1; i <= N; ++i ) in >> v[i];
for( int i = N; i >= 1; --i ) {
update( 1, 1,N, v[i], i );
}
for( int i = 1; i <= N; ++i ) out << p[i] << '\n';
return 0;
}