Cod sursa(job #2068149)

Utilizator anisca22Ana Baltaretu anisca22 Data 17 noiembrie 2017 11:27:50
Problema Schi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <bits/stdc++.h>
#define NMAX 30005

using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");

int N;
int a[NMAX], ait[4 * NMAX], rsp[NMAX];

void upd(int poz, int nr, int val, int st, int dr)
{
    if (st == dr)
    {
        ait[poz] = 1;
        rsp[st] = nr;
        return;
    }
    int mij = (st + dr) / 2;
    if (val + ait[2 * poz] <= mij)
        upd(2 * poz, nr, val, st, mij);
    else upd(2 * poz + 1, nr, val + ait[2 * poz], mij + 1, dr);
    ait[poz] = ait[2 * poz] + ait[2 * poz + 1];
}

int main()
{
    fin >> N;
    for (int i = 1; i <= N; i++)
        fin >> a[i];
    for (int i = N; i >= 1; i--)
        upd(1, i, a[i], 1, N);
    for (int i = 1; i <= N; i++)
        fout << rsp[i] << "\n";
    return 0;
}