Cod sursa(job #1822347)

Utilizator RaduMirceaAndreiRadu Mircea Andrei RaduMirceaAndrei Data 4 decembrie 2016 19:38:10
Problema Schi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
# include <fstream>
# define DIM 30010
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
int arb[4*DIM],v[DIM],poz[DIM],n,i;
void build(int nod,int st,int dr){
    if(st==dr){
        arb[nod]=1;
        return;
    }
    int mij=(st+dr)/2;
    build(2*nod,st,mij);
    build(2*nod+1,mij+1,dr);
    arb[nod]=arb[2*nod]+arb[2*nod+1];
}
int place(int nod,int st,int dr,int k){
    if(st==dr){
        arb[nod]=0;
        return st;
    }
    int mij=(st+dr)/2,rez;
    if(arb[2*nod]>=k)
        rez=place(2*nod,st,mij,k);
    else
        rez=place(2*nod+1,mij+1,dr,k-arb[2*nod]);
    arb[nod]=arb[2*nod]+arb[2*nod+1];
    return rez;
}
int main () {
    fin>>n;
    build(1,1,n);
    for(i=1;i<=n;i++)
        fin>>v[i];
    for(i=n;i>=1;i--)
        poz[place(1,1,n,v[i])]=i;
    for(i=1;i<=n;i++)
        fout<<poz[i]<<"\n";
    return 0;
}