Cod sursa(job #3264236)

Utilizator adelina_15InfoAdelina Radoi adelina_15Info Data 19 decembrie 2024 16:14:41
Problema Schi Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <bits/stdc++.h>

using namespace std;

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

int n, norg;
vector<int> v;
int aint[70000];
int rez[40000];

void Build()
{
    for(int i = 0; i < norg; i++)
        aint[norg+i] = 1;
    for(int i = n-1; i > 0; i--)
        aint[i] = aint[i*2]+aint[i*2+1];
}

void Sterge(int nod)
{
    int ind = nod;
    while(ind >= 1)
    {
        aint[ind]--;
        ind /= 2;
    }
}

int CautaPoz(int x)
{
    int ind = 1;
    while(ind < n)
    {
        int st = aint[ind*2];
        if(st >= x)
        {
            ind = ind*2;
        }
        else
        {
            x -= st;
            ind = ind*2+1;
        }
    }
    Sterge(ind);
    return ind-n+1;
}

int main()
{
    fin >> n;
    v.resize(n+1);
    norg = n;
    int nnou = 1;
    while(nnou < n)
        nnou *= 2;
    n = nnou;
    Build();
    for(int i = 1; i <= norg; i++)
        fin >> v[i];
    for(int i = n; i >= 1; i--)
    {
        int ind = CautaPoz(v[i]);
        rez[ind] = i;
    }
    for(int i = 1; i <= n; i++)
        fout << rez[i] << "\n";
    return 0;
}