Cod sursa(job #1017333)

Utilizator cat_red20Vasile Ioana cat_red20 Data 27 octombrie 2013 17:43:41
Problema Schi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<fstream>
#define MAXN 1<<16
using namespace std;
int s[MAXN],n,v[30001],poz,sol[30001],val;
ifstream fin("schi.in");
ofstream fout("schi.out");

void querry(int nod,int st,int dr)
{
    if(st==dr)
    {
        poz=st;
        s[nod]=0;
        return;
    }
    int m=(st+dr)/2;
    if(s[2*nod]<val)
    {
        val-=s[2*nod];
        querry(2*nod+1,m+1,dr);
    }
    else
    {
        querry(2*nod,st,m);
    }
    s[nod]--;
}

void init(int nod,int st,int dr)
{
    s[nod]=dr-st+1;
    if(st<dr)
    {
        init(2*nod,st,(st+dr)/2);
        init(2*nod+1,(st+dr)/2+1,dr);
    }
}

int main()
{
    fin>>n;
    init(1,1,n);
    for(int i=1;i<=n;i++)
    {
        fin>>v[i];
    }
    for(int i=n;i>=1;i--)
    {
        val=v[i];
        querry(1,1,n);
        sol[poz]=i;
    }
    for(int i=1;i<=n;i++)
    {
        fout<<sol[i]<<"\n";
    }
    return 0;
}