Cod sursa(job #1324313)

Utilizator felixiPuscasu Felix felixi Data 22 ianuarie 2015 08:46:40
Problema Schi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#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;
}