Cod sursa(job #3273793)

Utilizator AndreiNicolaescuEric Paturan AndreiNicolaescu Data 3 februarie 2025 21:08:51
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <bits/stdc++.h>
#define cin ci
#define cout co
using namespace std;

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

int n, x;
vector<int> aib, v, ans;

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

int bs(int val)
{
    int ans = 0, csum = 0;
    for(int step = (1 << 15); step > 0; step /= 2)
        if(ans + step <= n && csum + aib[ans + step] < val)
        {
            ans += step;
            csum += aib[ans];
        }
    return ans + 1;
}

int main()
{
    cin >> n;

    aib.assign(n+1, 0);
    v.resize(n+1);
    ans.resize(n+1);

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

    for(int i = n; i >= 1; i--)
    {
        x = bs(v[i]);
        update(x, -1);
        ans[x] = i;
    }

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

    return 0;
}