Cod sursa(job #2604580)

Utilizator As932Stanciu Andreea As932 Data 22 aprilie 2020 22:06:21
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");

const int nmax=30005;

int n,v[nmax],aib[nmax],sol[nmax]/*,sum[nmax]*/;

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

void read()
{
    fin>>n;

    for(int i=1;i<=n;i++)
    {
        fin>>v[i];
        //sum[i]=sum[i-1]+1;
        update(i,1);
    }
}

void solve()
{
    for(int i=n;i>=1;i--)
    {
        int x=v[i],idx=0,p=1<<20;

        /*for(int i=1;i<=n;i++)
            fout<<sum[i]<<" ";
        fout<<"\n";*/

        for(;p>0;p/=2)
            if(idx+p<=n)
                if(aib[idx+p]<x)
                {
                    idx+=p;
                    x-=aib[idx];
                }

        //fout<<idx+1<<"\n";

        sol[idx+1]=i;
        update(idx+1,-1);

        /*for(int i=idx+1;i<=n;i++)
            sum[i]--;*/
    }

    for(int i=1;i<=n;i++)
      fout<<sol[i]<<"\n";
}

int main()
{
    read();
    solve();

    return 0;
}