Cod sursa(job #2434364)

Utilizator Briana_NeaguNeagu Briana Briana_Neagu Data 1 iulie 2019 16:44:36
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <bits/stdc++.h>
#define maxim 30005


using namespace std;


ifstream f("schi.in");
ofstream g("schi.out");

int a[maxim], n;
int tree[maxim << 2];
int ans[maxim];

void update (int nod, int i, int j, int poz, const int k )
{
    if (i==j)
    {
        tree[nod]=0;
        ans[i]=k;
    }
    else
    {
        int m=(i+j)/2;
        if (poz<=tree[nod*2])
            update(nod*2, i, m, poz, k);
        else
            update(nod* 2+1, m+1, j, poz-tree[nod*2], k);
        tree[nod]=tree[nod * 2 ]+tree[nod * 2 + 1 ];
    }
}


void create(int nod, int i, int j)
{
    if (i==j)
        tree[nod]=1;
    else
    {
        int m=(i+j)/2;
        create (nod*2, i, m);
        create (nod*2+1, m+1, j);
        tree[nod]=tree[nod * 2]+tree[nod * 2 + 1];
    }
}

int main()
{
    f>>n;
    create(1 ,1 ,n);
    for (int i=1; i <= n; i ++)
        f>>a[i];
    for (int i=n; i>=1; i --)
        update(1, 1, n, a[i], i);
   for (int i=1; i <=n; i ++)
       g<<ans[i]<<'\n';

}