Cod sursa(job #3229230)

Utilizator Anul2024Anul2024 Anul2024 Data 14 mai 2024 18:40:06
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>
using namespace std;
ifstream fin ("schi.in");
ofstream fout ("schi.out");
int n,i,poz;
int aib[30001],v[30001],sol[30001];
void update (int i,int val)
{
    for (; i<=n; i+=(i&-i))
        aib[i]+=val;
}
int query (int val)
{
    int sum=0,poz=0;
    for (int p=14; p>=0; p--)
    {
        if (poz+(1<<p)<=n&&aib[poz+(1<<p)]+sum<=val)
        {
            poz+=(1<<p);
            sum+=aib[poz];
        }
    }
    return poz+1;
}
int main()
{
    fin>>n;
    for (i=1; i<=n; i++)
    {
        fin>>v[i];
        update (i,1);
    }
    for (i=n; i>0; i--)
    {
        poz=query (v[i]-1);
        update (poz,-1);
        sol[poz]=i;
    }
    for (i=1; i<=n; i++)
        fout<<sol[i]<<"\n";
    return 0;
}