Cod sursa(job #1842221)

Utilizator zdavid112zIon David-Gabriel zdavid112z Data 6 ianuarie 2017 17:42:48
Problema Schi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <cstdio>

using namespace std;

int v[150000];
int org[30001];
int rv[30001];
int n;

int rez;
int nr;

void querry(int pos, int st, int dr)
{
    v[pos]++;
    if(st != dr)
    {
        int mid = (st + dr) / 2;
        int slotst = mid - st + 1 - v[pos * 2];
        if(slotst >= nr)
            querry(pos * 2, st, mid);
        else
        {
            nr -= slotst;
            querry(pos * 2 + 1, mid + 1, dr);
        }
    } else rez = st;
}

int main()
{
    int i;
    freopen("schi.in", "r", stdin);
    freopen("schi.out", "w", stdout);
    scanf("%d", &n);
    for(i = 1; i <= n; i++)
    {
        scanf("%d", &org[i]);
    }
    for(i = n; i >= 1; i--)
    {
        nr = org[i];
        querry(1, 1, n);
        rv[rez] = i;
    }
    for(i = 1; i <= n; i++)
    {
        printf("%d\n", rv[i]);
    }
    return 0;
}