Cod sursa(job #3304737)

Utilizator unomMirel Costel unom Data 26 iulie 2025 17:26:52
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>

using namespace std;

ifstream in("schi.in");
ofstream out("schi.out");
int n;
int v[30005];
int aib[30005];
int ans[30005];

void update(int poz, int val)
{
    for(int i = poz; i<=n; i+=(i&-i))
    {
        aib[i] += val;
    }
}

int cauta(int x)
{
    int poz = 0;
    int sum = 0;

    for(int bit = 18; bit>=0; bit--)
    {
        if(poz + (1 << bit) <= n && sum + aib[poz + (1 << bit)] < x)
        {
            sum += aib[poz + (1 << bit)];
            poz += (1 << bit);
        }
    }

    return poz + 1;
}

int main()
{
    in>>n;
    for(int i = 1; i<=n; i++)
    {
        in>>v[i];

        update(i, 1);
    }

    for(int i = n; i>=1; i--)
    {
        int poz = cauta(v[i]);

        ans[poz] = i;

        update(poz, -1);
    }

    for(int i = 1; i<=n; i++)
    {
        out<<ans[i]<<'\n';
    }

    return 0;
}