Cod sursa(job #3308653)

Utilizator cris71Vlad Bogdan Cristian cris71 Data 26 august 2025 23:24:30
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("schi.in");
ofstream fout ("schi.out");
int const lmax=30007;
int n,aib[lmax];
int v[lmax], rez[lmax];
void update(int ind, int val)
{
    for(int i=ind;i<=n;i+=(i&-i))
    {
        aib[i]+=val;
    }
}
int binSearch(int val)
{
    int ind=0;
    int sum=0;
    int interval=(1<<((int)log2(n)));
    while(interval)
    {
        if(ind+interval<=n and sum+aib[interval+ind]<val)
        {
            sum+=aib[interval+ind];
            ind+=interval;
        }
        interval/=2;
    }
    return ind+1;
}
int main()
{
    fin>>n;
    for(int i=1;i<=n;i++)///index de la 1 din cauza AIB
    {
        fin>>v[i];
        update(i,1);
    }
    for(int i=n;i>=1;i--)
    {
        int pos=binSearch(v[i]);
        rez[pos]=i;
        update(pos,-1);
    }
    for(int i=1;i<=n;i++)
    {
        fout<<rez[i]<<"\n";
    }
    fin.close();
    fout.close();
    return 0;
}