Cod sursa(job #2064541)

Utilizator leraValeria lera Data 12 noiembrie 2017 14:50:11
Problema Schi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <iostream>
#include <fstream>
#define Nmax 30005
using namespace std;

ifstream fin("schi.in");
ofstream fout("schi.out");
int arb[4 * Nmax], b[Nmax], a[Nmax], n;

void upd(int nod, int L, int R, int poz, int val)
{
    int mij = (L + R)/2;
    if(L == R)
    {
        b[L] = val;
        arb[nod] = 1;
        return;
    }
    if(poz + arb[nod * 2] <= mij)
        upd(nod * 2, L, mij, poz, val);
    else upd(nod * 2 + 1, mij + 1, R, poz + arb[2 * nod], val);
    arb[nod] = arb[2 * nod] + arb[2 * nod + 1];
}
int main()
{
    fin >> n;
    for(int i = 1; i <= n; i++)
        fin >> a[i];
    for(int i = n; i >= 1; i--)
        upd(1, 1, n, a[i], i);
    for(int i = 1; i <= n; i++)fout << b[i] << "\n";
    return 0;
}