Cod sursa(job #3156289)

Utilizator Botnaru_VictorBotnaru Victor Botnaru_Victor Data 11 octombrie 2023 09:01:36
Problema Schi Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <bits/stdc++.h>

using namespace std;

string nume="schi";
ifstream in(nume+".in");
ofstream out(nume+".out");
#define cin in
#define cout out

const int MN=3e5+5;

int arb[MN*2];
int n;
void update(int poz, int x)
{
    poz+=n-1;
    for(;poz>0;poz>>=1)
    {
        arb[poz]+=x;
    }
}

int query(int val)
{
    int poz=1;
    for(poz<<=1; poz<2*n; poz<<=1)
    {
        if(arb[poz]<val)
        {
            val-=arb[poz++];
        }
    }
    return (poz>>1)-n+1;
}

int v[MN];
int ans[MN];
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>v[i];
        update(i,1);
    }
    
    for(int i=n;i>=1;i--)
    {
        int poz=query(v[i]);
        update(poz, -1);
        ans[poz]=i;
    }
    
    for(int i=1;i<=n;i++)
    {
        cout<<ans[i]<<'\n';
    }
    
    return 0;
}