Cod sursa(job #3318788)

Utilizator horatiu.avramAvram Popa Cristian Horatiu horatiu.avram Data 28 octombrie 2025 20:01:58
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.15 kb
#include<bits/stdc++.h>
using namespace std;
const int MAXN=3e4;
ifstream fin("schi.in");
ofstream fout("schi.out");
int n,poz;
int sol[MAXN+1],aint[4*MAXN+1],v[MAXN+1];
int query(int nod,int st,int dr,int val) {
    if(st==dr) {
        return st;
    } else {
        int s1=aint[2*nod];
        int s2=aint[2*nod+1];
        int mid=(st+dr)/2;
        if(s1>=val) {
            return query(2*nod,st,mid,val);
        } else {
            return query(2*nod+1,mid+1,dr,val-s1);
        }
    }
}
void update(int nod,int st,int dr,int poz,int val) {
    if(st==dr) {
        aint[nod]=val;
    } else {
        int mid=(st+dr)/2;
        if(poz<=mid) {
            update(2*nod,st,mid,poz,val);
        } else {
            update(2*nod+1,mid+1,dr,poz,val);
        }
        aint[nod]=aint[2*nod]+aint[2*nod+1];
    }
}
int main() {
    fin>>n;
    for(int i=1; i<=n; i++) {
        fin>>v[i];
        update(1,1,n,i,1);
    }
    for(int i=n; i>=1; i--) {
        poz=query(1,1,n,v[i]);
        update(1,1,n,poz,0);
        sol[poz]=i;
    }
    for(int i=1; i<=n; i++) {
        fout<<sol[i]<<"\n";
    }
    return 0;
}