Cod sursa(job #3325015)

Utilizator Victor321321Victor Casandra Victor321321 Data 24 noiembrie 2025 15:28:47
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <bits/stdc++.h>

using namespace std;

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

int n;
int bit[30005];
int ans[30005];
int a[30005];

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

int find_kth(int k)
{
    int pos = 0;
    int pw = 1 << 15;
    while (pw)
    {
        if (pos + pw <= n && bit[pos + pw] < k)
        {
            k -= bit[pos + pw];
            pos += pw;
        }
        pw >>= 1;
    }
    return pos + 1;
}

int main()
{
    fin >> n;
    for (int i = 1; i <= n; i++)
        fin >> a[i];
    for (int i = 1; i <= n; i++)
        update(i, 1);
    for (int i = n; i >= 1; i--)
    {
        int pos = find_kth(a[i]);
        ans[pos] = i;
        update(pos, -1);
    }
    for (int i = 1; i <= n; i++)
        fout << ans[i] << "\n";
    return 0;
}