Cod sursa(job #2209661)

Utilizator flaviu_2001Craciun Ioan-Flaviu flaviu_2001 Data 4 iunie 2018 00:35:41
Problema Schi Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

using namespace __gnu_pbds;
using namespace std;
typedef long double ld;

struct thing{
    ld code;
    int idx;
    bool operator<(const thing &obj)const{
        return code < obj.code;
    }
};

typedef tree<thing, null_type, less<thing>, rb_tree_tag, tree_order_statistics_node_update> Set;
int n;
Set s;

thing mkt(int idx, ld code)
{
    thing aux;
    aux.code = code;
    aux.idx = idx;
    return aux;
}

int main()
{
    ifstream fin ("schi.in");
    ofstream fout ("schi.out");
    int x;
    fin >> n >> x;
    s.insert(mkt(1, 10000));
    for (int i = 2; i <= n; ++i){
        fin >> x;
        if(x == 1){
            ld a1 = 0;
            ld a2 = (*s.find_by_order(x-1)).code;
            s.insert(mkt(i, (a1+a2)/2.0));
        }else if (x == i){
            ld a1 = (*s.find_by_order(x-2)).code;
            ld a2 = 20000;
            s.insert(mkt(i, (a1+a2)/2.0));
        }else{
            ld a1 = (*s.find_by_order(x-2)).code;
            ld a2 = (*s.find_by_order(x-1)).code;
            s.insert(mkt(i, (a1+a2)/2.0));
        }
    }
    for (Set::iterator it = s.begin(); it != s.end(); ++it)
        fout << it->idx << "\n";
    return 0;
}