Cod sursa(job #3362980)

Utilizator CorvinJudge0Corvin Judge CorvinJudge0 Data 13 august 2026 11:56:33
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <fstream>
#include <vector>
#include <cmath>

using namespace std;

ifstream fin("schi.in");
ofstream fout("schi.out");

int v[30003];
vector <int> segtree(400001);
int rez[30001];
int n;
int cn;

void build(int node) {
    if (node>=n) segtree[node]=1;
    else {
        build(node*2);
        build(node*2+1);
        segtree[node]=segtree[node*2]+segtree[node*2+1];
    }
}

void update(int a) {
    a+=n-1;
    segtree[a]--;
    a/=2;
    while (a>=1) {
        segtree[a]--;
        a/=2;
    }
}

int query(int poz, int start, int end, int node) {
    int mij=(start+end)/2;
    if (node>=n) {
        return node-n+1;
    }
    if (segtree[2*node]<poz) {
        return query(poz-segtree[2*node], mij+1, end, 2*node+1);
    }else {
        return query(poz, start, mij, 2*node);
    }
}

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

    cn=n;
    int aux=log2(n);
    if (n==pow(2,aux)) {
        aux--;
    }
    n=pow(2,(aux+1));
    build(1);
    for (int i=cn;i>=1;i--) {
        int aux=query(v[i],1,n,1);
        update(aux);
        rez[aux]=i;
    }
    for (int i=1;i<=cn;i++) {
        fout << rez[i] << '\n';
    }
    return 0;
}