Cod sursa(job #2401371)

Utilizator MateiTrandafirMatei Trandafir MateiTrandafir Data 9 aprilie 2019 17:27:47
Problema Schi Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <fstream>

int tree[1 << 16], i, n, x, v[30001], r[30001];

inline void add(int p, int st, int dr) {
    ++tree[p];
    if (st == dr) r[st] = i;
    else {
        int m = (st + dr) / 2;
        int l = m - st + 1 - tree[2 * p];
        if (l >= x) add(2 * p, st, m);
        else {
            x -= l;
            add(2 * p + 1, m + 1, dr);
        }
    }
}

int main() {
    std::ifstream in("schi.in");
    std::ofstream out("schi.out");
    in >> n;
    for (i = 1; i <= n; ++i) in >> v[i];
    for (i = n; i >= 1; --i) {
        x = v[i];
        add(1, 1, n);
    }
    for (i = 1; i <= n; ++i) out << r[i] << ' ';
    return 0;
}