Cod sursa(job #1385691)

Utilizator alex_HarryBabalau Alexandru alex_Harry Data 12 martie 2015 11:28:17
Problema Schi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>
using namespace std;
ifstream f("schi.in");
ofstream g("schi.out");
int place,N,Array[30005],Partial[30005],Poz[30005],Arb[4*30005],Lazy[4*30005];
void Build(int K,int L,int R)
{
    if(L>R)
        return;
    if(L==R)
    {
        Arb[K]=1;
        return;
    }
    Build(2*K,L,(L+R)/2);
    Build(2*K+1,(L+R)/2+1,R);
    Arb[K]=Arb[2*K]+Arb[2*K+1];
}
void Read()
{
    f>>N;
    for(int i=1;i<=N;i++)
        f>>Array[i];
    Build(1,1,N);
}
void Query(int K,int L,int R,int x)
{
    int node=K;
    if(L==R)
    {
        place=L;
        Arb[K]--;
        return;
    }
    if(x<=Arb[2*K])
        Query(K*2,L,(L+R)/2,x);
    else
        Query(K*2+1,(L+R)/2+1,R,x-Arb[2*K]);
    Arb[K]--;
}
void Solve()
{
    for(int i=N;i>=1;i--)
    {
        Query(1,1,N,Array[i]);
        Poz[place]=i;
    }
    for(int i=1;i<=N;i++)
        g<<Poz[i]<<"\n";
}
int main()
{
    Read();
    Solve();
    return 0;
}