Cod sursa(job #1838253)

Utilizator mjmilan11Mujdar Milan mjmilan11 Data 31 decembrie 2016 15:43:33
Problema Schi Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");

const int Dim =30005;
int aib[Dim], c[Dim], a[Dim];
int n;

void update(int poz,int val)
{
    for(int i=poz;i<=n;i+=i & -i)
        aib[i]+=val;
}

int aib_bs(int k)
{
    int i=0;
    for(int p=1 << 15; p ; p>>=1)
        if(i+p<=n and aib[i+p] < k)
        {
            k-=aib[i+p];
            i+=p;
        }
    return i+1;
}

int main()
{
    fin >> n;
    for(int i=1;i<=n;++i)
    {
        fin >> a[i];
        update(i,+1);
    }
    int loc;
    for(int i=n;i;--i)
    {
        loc=aib_bs(a[i]);
        update(loc,-1);
        c[loc] = i;
    }

    for(int i=1;i<=n;++i)
    {
        fout << c[i] << endl;
    }
    return 0;
}