Cod sursa(job #3138307)

Utilizator Cosmin.BoeriuCosmin Boeriu George Cosmin.Boeriu Data 18 iunie 2023 19:25:19
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.27 kb

/*#include <fstream>
#include <vector>

using namespace std;

ifstream fin("schi.in");
ofstream fout("schi.out");

vector <int> v;

int main()
{   int n,poz,i;
    fin >> n;
    for ( i = 1; i <= n; i++) {
        fin>>poz;
        v.insert(v.begin() + (poz-1), i);
    }

    for (i = 0; i <n; i++){
        fout<<v[i]<<"\n";
    }
    return 0;
}*/

#include <fstream>

using namespace std;

ifstream fin("schi.in");
ofstream fout("schi.out");

int v[30001], arb[120004], n;

void adaugare(int poz, int l, int r, int i, int sarite){
    if( l==r ){
        arb[poz] = i+1;
        return;
    }
    int mij = ( l + r ) / 2;
    if( mij - l + 1 - arb[2*poz] + sarite >= v[i] ){
        adaugare(2*poz, l, mij, i, sarite);
    }
    else{
        adaugare(2*poz+1, mij+1, r, i, sarite + mij - l + 1 - arb[2*poz]);
    }
    arb[poz]++;
}

void afis(int poz, int l, int r){
    if( l == r ){
        fout<<arb[poz]<<'\n';
        return;
    }
    int mij = (l + r) / 2;
    afis(2 * poz, l, mij);
    afis(2*poz+1, mij+1, r);

}

int main()
{
    int i;

    fin>>n;
    for( i = 0; i < n; i++ )
        fin>>v[i];
    for( i = n - 1; i >= 0; i-- ){
        adaugare(1, 1, n, i, 0);
    }
    afis(1, 1, n);

    return 0;
}