Cod sursa(job #2752825)

Utilizator DariusGhercaDarius Gherca DariusGherca Data 19 mai 2021 18:57:48
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("schi.in");
ofstream g("schi.out");
const int N=3e4+10;
int rez[N],t[N*(N+1)/2],ord,n,poz;
void actualizare(int p,int st,int dr)
{
    t[p]++;
    if(st==dr)
    {
        rez[st]=poz;
        return;
    }
    int m=(st+dr)/2;
    if(ord<=(m-st+1)-t[2*p])
    {
        actualizare(2*p,st,m);
    }
    else
    {
        ord-=(m-st+1)-t[2*p];
        actualizare(2*p+1,m+1,dr);
    }
}
int main()
{
    f>>n;
    stack <int> s;
    for(int i=1;i<=n;i++)
    {
        int x;
        f>>x;
        s.push(x);
    }
    poz=n;
    while(!s.empty() && poz)
    {
        int l=s.top();
        s.pop();
        ord=l;
        actualizare(1,1,n);
        poz--;
    }
    for(int i=1;i<=n;i++)
    {
        g<<rez[i]<<"\n";
    }
    return 0;
}