Cod sursa(job #2751452)

Utilizator linte_robertLinte Robert linte_robert Data 15 mai 2021 02:02:07
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <iostream>
#include <fstream>
using namespace std;
const int MAX = 30010;
int n,i,v[MAX],A[4*MAX],sol[MAX];
void build(int nod,int st,int dr) {
    if (st == dr)
        A[nod] = 1;
    else{
        int mid = (st+dr)/2;
        build(2*nod,st,mid);
        build(2*nod+1,mid+1,dr);
        A[nod]=A[2*nod]+A[2*nod+1];
    }
}
void update(int nod,int st,int dr,int poz,int val) {
    if (st == dr){
        A[nod] = 0;
        sol[st] = val;
    }
    else{
        int mid = (st+dr)/2;
        if( poz <= A[2*nod] )
            update(2*nod,st,mid, poz,val);
        else
            update(2*nod+1,mid+1,dr,poz-A[2*nod],val);
        A[nod]=A[2*nod]+A[2*nod+1];
    }
}
int main() {
    ifstream fin("schi.in");
    ofstream fout("schi.out");
    fin >> n;
    for( i = 1; i <= n; i++){
        fin >> v[i];
    }
    build(1,1,n);
    for ( i = n; i >= 1; i-- ){
        update(1,1,n,v[i],i);
    }
    for ( i = 1; i <= n; i++ ){
        fout << sol[i] << "\n";
    }
}