Cod sursa(job #1332050)

Utilizator AeroHHorea Stefan AeroH Data 1 februarie 2015 16:51:22
Problema Schi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>
using namespace std;

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

int i,T,N,K,P,v[100005],r[100005],aib[100005],maxi;

void update(int x)
    {
        for(int j=x;j<=N;j+=j&(-j))
            aib[j]--;
    }
int querry(int x)
    {
        int val=0,i,s;
        for (i=0,s=1<<16;s;s>>=1)
            if (i + s <= N && aib[i+s] < x)
                {
                    x-=aib[i+s];
                    i+=s;
                }
        return i+1;
    }

int main()
{
    f>>N;
    for (i=1;i<=N;++i)
        f>>v[i];

    for(i=1;i<=N;++i)
        aib[i]=i&(-i);

    for(i=N;i;--i)
        {
            int pos=querry(v[i]);
            r[pos]=i;
            update(pos);
        }
    for(i=1;i<=N;++i)
        g<<r[i]<<'\n';


    return 0;
}