Cod sursa(job #3245963)

Utilizator Mihai_AritonMihai Ariton Mihai_Ariton Data 1 octombrie 2024 11:48:55
Problema Schi Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <bits/stdc++.h>
#pragma GCC optimize ("O3,unroll-loops")
using namespace std;

short v[30005], a[30005];
int st[400005];
void build(short node, short l, short r)
{
    short mij;
    if(l==r)
    {
        st[node]=1;
        return;
    }
    else
    {
        mij=(l+r)/2;
        build(node*2, l, mij);
        build(node*2+1, mij+1, r);
        st[node]=st[node*2]+st[node*2+1];
    }
}
void update(short node, short l, short r, short poz, short val)
{
    short mij;
    if(l==r)
    {
        st[node]=0;
        a[l]=val;
        return;
    }
    mij=(l+r)/2;
    if(st[node*2]>=poz)
    update(node*2, l, mij, poz, val);
    else
    update(node*2+1, mij+1, r, poz-st[node*2], val);
    st[node]=st[node*2]+st[node*2+1];
}
int main()
{
    ifstream cin("schi.in");
    ofstream cout("schi.out");

    short n;
    cin>>n;
    build(1, 1, n);
    for(short i=1; i<=n; i++)
        cin>>v[i];
    for(short i=n; i>=1; i--)
        update(1, 1, n, v[i], i);
    for(short i=1; i<=n; i++)
        cout<<a[i]<<'\n';

    return 0;
}