Pagini recente » Cod sursa (job #1707446) | Cod sursa (job #45245) | Cod sursa (job #2451986) | Cod sursa (job #312317) | Cod sursa (job #1340350)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in( "schi.in" );
ofstream out( "schi.out" );
const int NMAX = 30000;
int st[ 4 * NMAX + 1 ], p[ NMAX + 1 ], v[ NMAX + 1 ];
void upd( int nod, int s, int r, int poz, int val )
{
if( s == r )
{
st[ nod ] = 1;
p[ r ] = val;
return ;
}
int mid = ( s + r )/2, f1= 2 * nod, f2= 2 * nod + 1;
if( mid - s + 1 - st[ f1 ] >= poz )
{
upd( f1, s, mid, poz, val );
}
else
{
upd( f2, mid + 1, r, poz - mid + s - 1 + st[f1], val );
}
st[nod]= st[f1] + st[f2];
}
int main()
{
int N;
in >> N;
for( int i = 1; i <= N; ++i )
{
in >> v[i];
}
for( int i = N; i >= 1; --i )
{
upd( 1, 1, N, v[i], i );
}
for( int i = 1; i <= N; ++i )
{
out << p[i] << '\n';
}
return 0;
}