Cod sursa(job #3336611)

Utilizator Mihaita09Nechitescu Mihai Mihaita09 Data 25 ianuarie 2026 00:35:22
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <bits/stdc++.h>

using namespace std;

int n, aib[30001], sol[30001], v[30001],x;

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

#define cin fin
#define cout fout

int find_kth(int k)
{
    int pos = 0;
    int step = 1;
    while ((step<<1) <= n)
    {
        step <<= 1;
    }
    for (; step > 0; step >>= 1)
    {
        if (pos+step <= n && aib[pos+step] < k)
        {
            k -= aib[pos+step];
            pos += step;
        }
    }
    return pos+1;
}

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

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

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