Cod sursa(job #3244460)

Utilizator Sasha_12454Eric Paturan Sasha_12454 Data 24 septembrie 2024 20:36:16
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <bits/stdc++.h>

const std :: string FILENAME = "schi";

std :: ifstream f (FILENAME + ".in");

std :: ofstream g (FILENAME + ".out");

const int NMAX = 3e4 + 5;

int n;

int x;

int v[NMAX];

int ans[NMAX];

int arb[NMAX];

int cb(int x)
{
    int nr = 0;

    int ret = 0;

    for(int i = (1 << 15); i > 0; i /= 2)
    {
        if(ret + i <= n && nr + i - arb[ret + i] < x)
        {
            ret += i;

            nr += i - arb[ret];
        }
    }

    return ret + 1;
}

void update(int x)
{
    while(x <= n)
    {
        arb[x] ++;

        x += (x & (-x));
    }
}

int main()
{

    f >> n;

    for(int i = 1; i <= n; i ++)
    {
        f >> v[i];
    }

    std :: reverse(v + 1, v + n + 1);

    for(int i = 1; i <= n; i ++)
    {
        x = cb(v[i]);

        std :: cout << x;

        update(x);

        ans[x] = n - i + 1;
    }

    for(int i = 1; i <= n; i ++)
    {
        g << ans[i] << '\n';
    }

    return 0;
}