Cod sursa(job #2610945)

Utilizator bem.andreiIceman bem.andrei Data 5 mai 2020 22:00:26
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <bits/stdc++.h>

using namespace std;
ifstream r("schi.in");
ofstream w("schi.out");
int v[30002], ai[100000], fin[30002], n, dim=1;
void update(int poz)
{
    ai[poz]=ai[poz*2]+ai[poz*2+1];
    if(poz==1)
    {
        return;
    }
    else
    {
        update(poz/2);
    }
}
int query(int val, int nod){
    if(nod>dim){
        return nod;
    }
    if(ai[nod*2]>=val){
        return query(val, nod*2);
    }
    return query(val-ai[nod*2], nod*2+1);
}
int main()
{
    r>>n;
    while(dim<n)
    {
        dim*=2;
    }
    dim--;
    for(int i=1;i<=n;i++){
        r>>v[i];
        ai[i+dim]=1;
        update((i+dim)/2);
    }
    for(int i=n;i>0;i--){
        int p=query(v[i], 1)-dim;
        fin[p]=i;
        ai[p+dim]=0;
        update((p+dim)/2);
    }
    for(int i=1;i<=n;i++){
        w<<fin[i]<<"\n";
    }
    return 0;
}