Cod sursa(job #2033057)

Utilizator alex2209alexPavel Alexandru alex2209alex Data 6 octombrie 2017 08:34:59
Problema Schi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>

using namespace std;
ifstream f("schi.in");
ofstream g("schi.out");
int v[120000],poz[30001],n,i,a[30001];
int update(int st,int dr,int nod)
{
    int mij=(st+dr)/2;
    if(st==dr)
    {
        v[nod]=1;
        return 0;
    }
    v[nod]=dr-st+1;
    update(st,mij,nod*2);
    update(mij+1,dr,nod*2+1);
}
int cautare(int st,int dr,int nod,int sum)
{
    v[nod]--;
    int mij=(st+dr)/2;
    if(st==dr)
    {
        return st;
    }
    else if(sum<=v[nod*2])
    {
        return cautare(st,mij,nod*2,sum);
    }
    else
    {
        return cautare(mij+1,dr,nod*2+1,sum-v[2*nod]);
    }
}
int main()
{
    f>>n;
    update(1,n,1);
    for(i=1;i<=n;i++)
    {
        f>>a[i];
    }
    for(i=n;i>=1;i--)
    {
        poz[cautare(1,n,1,a[i])]=i;
    }
    for(i=1;i<=n;i++)
    {
        g<<poz[i]<<'\n';
    }
    return 0;
}