Задача C. Cutpoint on the plane

Автор:Г. Гренкин, И. Блинов   Ограничение времени:1 сек
Входной файл:Стандартный вход   Ограничение памяти:512 Мб
Выходной файл:Стандартный выход  

Условие

В городской поликлинике поставили задачу выяснить, какие сочетания пульса pi и артериального давления bi приводят к плохому самочувствию. С этой целью врачи измерили эти параметры у n пациентов, спросив у них о самочувствии. Получилась выборка с двумя признаками, разделенная на два класса ci: «1» - плохое самочувствие, «0» - нормальное самочувствие.

Данные передали в информационный центр поликлиники, где хотят построить оптимальную разделяющую границу между классами так, чтобы AUC-ROC-метрика оказалась наибольшей.

Требуется провести прямую через две точки из выборки так, чтобы при предсказании «1» по одну сторону от прямой или на самой прямой и «0» в остальных случаях классификация получилась наилучшей.

AUC вычисляется следующим образом. Вычисляется число реальных единиц K1 и число реальных нулей K0, расположенных в положительной полуплоскости. Тогда AUC = 0.5 + 0.5 ⋅ K1N1 − 0.5 ⋅ K0N0, где N1 – общее число единиц, N0 – общее число нулей.

Отметим, что положительной (соответствующей классу «1») считаем ту полуплоскость, в которой AUC больше.

Формат входных данных

Первая строка содержит одно целое число n. Далее следует n троек чисел pi, bi, ci. Числа pi, bi вещественные, ci — это 0 или 1. Гарантируется, что существует хотя бы одна точка относящаяся к классу 1 и хотя бы одна точка относящаяся к классу 0. Никакие три точки (pi, bi) не лежат на одной прямой.

Формат выходных данных

Выведите одно вещественное число — максимальное значение метрики AUC с точностью до 3х знаков после запятой.

Ограничения

2 ≤ n ≤ 1000 0 ≤ pi, bi ≤ 109 ci ∈ 0, 1

Примеры тестов

Стандартный вход Стандартный выход
1
4
0.0 0.0 1
1.0 1.0 1
0.0 1.0 0
1.0 0.0 0
0.75
2
5
1 1 1
0 1 1
1 0 1
0 0 1
3 2 0
1

0.115s 0.014s 17