Cod sursa(job #3362994)

Utilizator CorvinJudge0Corvin Judge CorvinJudge0 Data 13 august 2026 12:16:10
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
using namespace std;

ifstream cin("schi.in");
ofstream cout("schi.out");

#define int long long

int arr[300005],finl[300005],aint[1500005],rf;

void query(int s,int r,int ind,int nd)
{
    if (rf>0||aint[nd]==r-s+1) return;
    if (r-s+1-aint[nd]<arr[ind])
    {
        arr[ind]-=r-s+1-aint[nd];
        return;
    }
    if (s==r&&aint[nd]==0)
    {
        rf=s;
        aint[nd]=1;
        return;
    }
    else if (s==r) return;
    int mid=(s+r)/2;
    query(s,mid,ind,nd*2);
    query(mid+1,r,ind,nd*2+1);
    aint[nd]=aint[nd*2]+aint[nd*2+1];
}

int32_t main()
{
   int n;
   cin>>n;
   for (int i=1; i<=n; i++) cin>>arr[i];
   for (int i=n; i>0; i--)
   {
       rf=-1;
       query(1,n,i,1);
       finl[rf]=i;
   }
   for (int i=1; i<=n; i++) cout<<finl[i]<<"\n";
}