Cod sursa(job #1076873)

Utilizator anca1243Popescu Anca anca1243 Data 10 ianuarie 2014 17:47:43
Problema Schi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("schi.in");
ofstream out("schi.out");
const int N=100001;
int v[N],t[N],a[N];
int main()
{
    int st,dr,val,n,m;
    in>>n;
    for(int i=1;i<=n;i++)
        in>>v[i];
    for(int i=n;i>=1;i--)
    {
        st=1;
        dr=n;
        val=1;
        ++t[val];
        while(st!=dr)
        {
            m=(st+dr)/2;
            if(m-st+1-t[val*2]>=v[i])
            {
                dr=m;
                val*=2;
                ++t[val];
            }
            else
            {
                v[i]-=m-st+1-t[val*2];
                st=m+1;
                val=val*2+1;
                ++t[val];
            }
        }
        a[st]=i;
    }
    for(int i=1;i<=n;i++)
        out<<a[i]<<'\n';
    return 0;
}