Cod sursa(job #3333120)

Utilizator parrot279Sofi Tudose parrot279 Data 11 ianuarie 2026 11:29:46
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
const int nmax = 30004;
void build(int nod, int st, int dr);
void update(int poz, int schior, int nod, int st, int dr);

int n, aint[4*nmax], v[nmax], sol[nmax];

int main()
{
    fin>>n;
    for(int i = 1; i <= n; ++i)
        fin>>v[i];
    build(1, 1, n);
    for(int i = n; i >= 1; --i)
    {
        update(v[i], i, 1, 1, n);
    }
    for(int i = 1; i <= n; ++i)
        fout<<sol[i]<<"\n";


    return 0;
}
void build(int nod, int st, int dr)
{
    if(st == dr)
    {
        aint[nod] = 1;
        return;
    }
    int mijl = (st + dr) / 2;
    build(2*nod, st, mijl);
    build(2*nod+1, mijl+1, dr);
    aint[nod] = aint[2*nod] + aint[2*nod+1];

}
void update(int poz, int schior, int nod, int st, int dr)
{
    aint[nod]--;
    if(st == dr)
    {
        sol[st] = schior;
        return;
    }
    int mijl = (st + dr) / 2;
    if(aint[2*nod] >= poz)
        update(poz, schior, 2*nod, st, mijl);
    else
        update(poz - aint[2*nod], schior, 2*nod+1, mijl+1, dr);
}