Cod sursa(job #3296862)

Utilizator efiruFiru Eduard efiru Data 17 mai 2025 23:04:13
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <iostream>
#include <fstream>
using namespace std;


int n;
int bit[30002];
int v[30002] , rez[30002];


int get(int poz) {

    int ans = 0;
    for (int i = poz ; i > 0; i -= (i & -i)) {
        ans += bit[i];
    }

    return ans;
}

void update(int poz , int val) {

    for (int i = poz ; i <= n; i += (i & -i)) {
        bit[i] += val;
    }
}



int bs(int index) {
    int left = 1, right = n, poz = 0;
    while (left <= right) {
        int mid = (left + right) >> 1;
        int cnt = get(mid);
        if (cnt >= index) {
            poz = mid;
            right = mid - 1;
        } else {
            left = mid + 1;
        }
    }
    return poz;
}



int main() {
    ifstream fin("schi.in");
    ofstream fout("schi.out");
    fin >> n;


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


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


    for (int i = 1; i <= n; i++)
        fout << rez[i] << "\n";

    return 0;
}