Cod sursa(job #3322392)

Utilizator Tudor28Ceclan Tudor Tudor28 Data 13 noiembrie 2025 19:17:24
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
int n;
vector<int> aib;
void add(int a, int k)
{
    for (int i = a; i <= n; i += (i & -i))
    {
        aib[i] += k;
    }
}
int sum(int k)
{
    int sum = 0;
    for (int i = k; i >= 1; i -= (i & -i))
    {
        sum += aib[i];
    }
    return sum;
}
int check(int k)
{
    int rez = 0;
    for (int i = (1 << 14); i; i >>= 1)
    {

        if (i + rez <= n && aib[i + rez] <= k)
        {
            rez += i;
            k -= aib[rez];
        }
    }
    return rez;
}
int main()
{
    fin >> n;
    vector<int> v(n + 1);
    vector<int> ans(n + 1);
    aib.resize(n + 1);
    for (int i = 1; i <= n; i++)
    {
        fin >> v[i];
        add(i, 1);
    }
    for (int i = n; i >= 1; i--)
    {
        int rez = check(v[i] - 1) + 1;
        cout << rez << " ";
        ans[rez] = i;
        add(rez, -1);
    }
    for (int i = 1; i <= n; i++)
    {
        fout << ans[i] << '\n';
    }
    return 0;
}