Cod sursa(job #2020124)

Utilizator rares96cheseliRares Cheseli rares96cheseli Data 9 septembrie 2017 14:25:57
Problema Schi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <bits/stdc++.h>
 
using namespace std;
 
#define lsb(a) ((a) & (-a))

ifstream f("schi.in");
ofstream g("schi.out");
 
int N, step, aib[30005], a[30005], sol[300005];
 
int main() {
    f >> N;
 
    for (int i = 1; i <= N; ++i) {
        cin >> a[i];
        for (int j = i; j <= N; j += lsb(i)) {
            ++aib[j];
        }
    }
 
    for (step = 1; step <= N; step <<= 1);
 
    for (int i = N; i; --i) {
        int ps = 0, x = a[i];
 
        for (int j = step; j; j >>= 1) {
            if (ps + j <= N && aib[ps + j] < x) {
                ps += j;
                x -= aib[ps];
            }
        }
 
        sol[ps + 1] = i;
 
        for (int j = ps + 1; j <= N; j += lsb(j)) {
            aib[j] -= 1;
        }
    }
 
    for (int i = 1; i <= N; ++i) {
        cout << sol[i] << '\n';
    }
    
    return 0;
}