Cod sursa(job #1148124)

Utilizator ThomasFMI Suditu Thomas Thomas Data 20 martie 2014 14:41:17
Problema Schi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>
using namespace std;

#define NMax 30005
#define AMax NMax*4

ifstream f("schi.in");
ofstream g("schi.out");

int n;
int v[NMax],poz[NMax];
int A[AMax];

void arb_search(int nr,int val,int nod,int st,int dr)
{
    A[nod]++;

    if(st==dr)
    {
        poz[st]=nr;
        return;
    }

    int mij=(st+dr)/2;
    int fiu1=nod*2,fiu2=nod*2+1;
    int cap=mij-st+1;;

    if(cap-A[fiu1]>=val) arb_search(nr,val,fiu1,st,mij);
    else
    {
        val-=cap-A[fiu1];
        arb_search(nr,val,fiu2,mij+1,dr);
    }
}

int main()
{
    int i;

    f>>n;
    for(i=1;i<=n;i++) f>>v[i];

    for(i=n;i>=1;i--) arb_search(i,v[i],1,1,n);

    for(i=1;i<=n;i++) g<<poz[i]<<"\n";

    f.close();
    g.close();
    return 0;
}