Cod sursa(job #2132876)

Utilizator AndreidgDragomir Andrei Valentin Andreidg Data 16 februarie 2018 10:34:20
Problema Schi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>
using namespace std;
const int N = 30000;
ifstream f("schi.in");
ofstream g("schi.out");
int n;
int arb[4*N];

void build(int st,int dr,int k){

    if(st==dr){
        arb[k] = 1;
    }
    else{
        int mij =(st+dr)/2;
        build(st,mij,2*k);
        build(mij+1,dr,2*k+1);
        arb[k] = (arb[2*k]+arb[2*k+1]);
    }
    //g<<k<<" "<<arb[k]<<"\n";
}
int v[N];
int x[N];
int num,poz;
void creere(int st,int dr,int k){

    int mij = (st+dr)/2;
    if(st == dr){
        arb[k]--;
        g<<st<<" ";
        return;
    }
    if(num <= arb[2*k]){
        creere(st,mij,2*k);
        arb[k] = arb[2*k+1]+arb[2*k];
    }
    else{
        num -= arb[2*k+1];
        creere(mij+1,dr,2*k+1);
        arb[k] = arb[2*k+1]+arb[2*k];
    }

}

int main()
{
    f>>n;
    build(1,n,1);
    for(int i = 1; i<=n; i++){
        f>>v[i];
    }
    for(int i =n;i>=1; i--){
        f>>num;
        poz = i;
        creere(1,n,1);

        //g<<"\n";
    }
    f.close();
    g.close();
    return 0;
}