Cod sursa(job #2973414)

Utilizator Vincent47David Malutan Vincent47 Data 31 ianuarie 2023 22:05:43
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>

using namespace std;

    ifstream cin("schi.in");
    ofstream cout("schi.out");

    const int dim = 100001;
    int aib[dim], n, v[dim], sol[dim];

    void update(int p, int x)
    {
        for (int i = p; i <= n; i += i & -i)
            aib[i] += x;
    }
    int query(int p)
    {
        int sum = 0;
        for (int i = p; i; i -= i & -i)
            sum += aib[i];
        return sum;
    }

    int bs(int p)
    {
        int s = 1, d = n, poz = n;
        while(s <= d)
        {
            int m = (s + d) >> 1;
            if (query(m) >= p)
            {
                d = m - 1;
                poz = m;
            }
            else s = m + 1;
        }
            return poz;
    }

int main()
{
    int i;
    cin >> n;
    for (i = 1; i <= n; ++i)
    {
        cin >> v[i];
        update(i, 1);
    }

    for (i = n; i >= 1; --i)
    {
        int p = bs(v[i]);
        update(p, -1);
        sol[p] = i;
    }
   for (i = 1; i <= n; ++i)
    cout << sol[i] << '\n';
    return 0;
}