Cod sursa(job #1340350)

Utilizator gedicaAlpaca Gedit gedica Data 11 februarie 2015 19:31:57
Problema Schi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#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;
}