Cod sursa(job #3309763)

Utilizator Grama2008Grama Andrei Teodor Grama2008 Data 8 septembrie 2025 16:20:42
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <bits/stdc++.h>

using namespace std;

const int N=30005;

int v[N], p[N], bit[N], n;

void update(int pos, int a){
    while (pos<=n){
        bit[pos]+=a;
        pos+=pos&-pos;
    }
}

int main()
{
    freopen("schi.in", "r", stdin);
    freopen("schi.out", "w", stdout);
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cin>>n;
    for (int i=1;i<=n;i++){
        cin>>v[i];
        update(i,1);
    }
    for (int j=n;j>=1;j--){
        int idx=0,t=v[j],pow2=1<<15;
        while (pow2){
            int i=idx+pow2;
            if (i<=n && bit[i]<t){
                t-=bit[i];
                idx=i;
            }
            pow2>>=1;
        }
        idx++;
        update(idx, -1);
        p[idx]=j;
    }
    for (int i=1;i<=n;i++){
        cout<<p[i]<<'\n';
    }
    return 0;
}