Cod sursa(job #2759310)

Utilizator AlexNic_Nicula Dan Alexandru AlexNic_ Data 16 iunie 2021 19:15:34
Problema Schi Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
#define M 2<<16
#define N 30001

using namespace std;

ifstream cin("arbint.in");
ofstream cout("arbint.out");


int v[N],sol[N];
int t[M],x;

void actualizare(int p, int st , int dr, int poz , int concurent){
    t[p]++;
    if(st==dr){
        sol[st]=concurent;
        return;
    }
    int m=(st+dr)/2, fs=2*p , fd=2*p+1;
    if(poz<=m-st+1-t[fs]){
        actualizare(fs,st,m,poz,concurent);
    }
    else{
        actualizare(fd,m+1,dr,poz-(m-st+1-t[fs]),concurent);
    }

}

int main()
{
    int n,position;
    cin>>n;

    for(int i=1;i<=n;i++){
        cin>>v[i];
    }
    for(int i=n;i>=1;i--){
        actualizare(1,1,n,v[i],i);
    }
    for(int i=1;i<=n;i++){
        cout<<sol[i]<<'\n';
    }
    return 0;
}