Cod sursa(job #3322308)

Utilizator mirceamaierean41Mircea Maierean mirceamaierean41 Data 13 noiembrie 2025 13:36:01
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#include <vector>

using namespace std;

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

const int NMAX = 3e4 + 1;
int aib[NMAX], n;

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

int bs(int val)
{
    int i = 0;
    for (int p = (1 << 15); p; p >>= 1)
        if (p + i <= n && aib[p + i] <= val)
        {
            i += p;
            val -= aib[i];
        }
    return i;
}

int main()
{
    fin >> n;
    vector<int> ans(n + 1), a(n + 1);
    for (int i = 1; i <= n; ++i)
    {
        fin >> a[i];
        update(i, 1);
    }
    for (int i = n; i; --i)
    {
        int loc = bs(a[i] - 1) + 1;
        update(loc, -1);
        ans[loc] = i;
    }

    for (int i = 1; i <= n; ++i)
        fout << ans[i] << "\n";
    return 0;
}