Cod sursa(job #3311832)

Utilizator TeogaloiuTeodor Galoiu Teogaloiu Data 24 septembrie 2025 15:04:57
Problema Schi Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>

using namespace std;
ifstream cin ("schi.in");
ofstream cout ("schi.out");
const int Size=300001;
int v[Size];
int dp[4*Size];
int position;
int res[Size];
void update(int pos)
{
    dp[pos]=dp[pos*2]+dp[pos*2+1];
    if(pos==1)
        return;
    update(pos/2);
}
void Search(int Node,int st, int dr,int s )
{
    if(st==dr)
    {
        position=Node;
        dp[Node]=0;
        update(Node/2);
        return;
    }
    int mij=(st+dr)/2;
    if(s>dp[2*Node])
        Search(2*Node+1,st,mij,s-dp[2*Node]);
    else
        Search(2*Node,mij+1,dr,s);
}
int main()
{
    int n;
    cin>>n;
    int Power=1;
    while(n>Power)
        Power=(Power<<1);
    for(int i=1;i<=n;i++){
        cin>>v[i];
        dp[i+Power-1]=1;
    }
    for(int i=Power;i<n+Power;i++)
        update(i/2);
    for(int i=n;i>=1;i--)
    {
        Search(1,1,n,v[i]);
        res[position-Power]=i;
    }
    for(int i=0;i<n;i++)
        cout<<res[i]<<' ';
    return 0;
}