Cod sursa(job #2137586)

Utilizator alexandra_paticaAndreea Alexandra Patica alexandra_patica Data 20 februarie 2018 21:41:35
Problema Schi Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <cstdio>
#include <algorithm>
using namespace std;


int a[30002];

int n, i, ind, val, Arb[100002], x;

//bool cmp (punct a, punct b)
//{
//    return (a.place<b.place);
//}

void update(int nod, int st, int dr)
{
    if (st>dr) return;
    if (st==dr && st==ind){
        Arb[nod]=val;
        a[val]=st;
        return;
    }

    else if (st==dr){
        if (Arb[nod]>=val){
            Arb[nod]++;

            a[Arb[nod]]=st;
        }
        return;
    }

    int mij=(st+dr)/2;

    if (Arb[2*nod]>=val || ind<=mij) update(2*nod, st, mij);
    if (Arb[2*nod+1]>=val || ind>mij) update(2*nod+1, mij+1, dr);

    Arb[nod]=max(Arb[2*nod], Arb[2*nod+1]);
}


int main ()
{
    freopen("schi.in", "r", stdin);
    freopen("schi.out", "w", stdout);

    scanf("%d", &n);

    for (i=1; i<=n; i++){
        scanf("%d", &x);
        ind=i; val=x;
//        a[i].i=i;
        update(1, 1, n);

    }
//    sort(a+1, a+n+1, cmp);
    for (i=1; i<=n; i++) printf("%d\n", a[i]);
    return 0;
}