Pagini recente » Cod sursa (job #1419352) | Cod sursa (job #2409650) | Cod sursa (job #2553022) | Cod sursa (job #1470526) | Cod sursa (job #2209661)
#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;
}