Cod sursa(job #2860670)

Utilizator elenacurecheriuElena Curecheriu elenacurecheriu Data 2 martie 2022 21:57:53
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>

using namespace std;

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

int n;
int aint[120005], v[30005], sol[30005];

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

void update(int nod, int st, int dr, int val, int ind)
{
    if(st==dr)
    {
        aint[nod]=0;
        sol[st]=ind;
        return;
    }
    int mij = (st+dr) / 2;
    if(aint[nod*2] >= val)
        update(nod*2, st, mij, val, ind);
    else
        update(nod*2+1, mij+1, dr, val-aint[2*nod], ind);
    aint[nod]=aint[2*nod]+aint[2*nod+1];
}

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