Processing math: 100%

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

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

Условие

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

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

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

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

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

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

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

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

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

Ограничения

2n1000 0pi,bi109 ci0,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