Даны $$$n$$$ точек на плоскости. Каждая точка имеет координаты $$$x_i$$$, $$$y_i$$$ и цвет $$$c_i$$$, который может быть белый ($$$c_i=0$$$) или чёрный ($$$c_i=1$$$).
Чтобы определить цвет новой точки $$$P$$$, если он неизвестен, может использоваться следующий подход. Берутся $$$k$$$ наиболее близких к ней наших точек (где $$$k$$$ — некоторое нечётное число), и выбирается тот цвет, который встречается среди них чаще. Примечание: меру близости двух точек можно вычислять по разному, в данной задаче используется обычное евклидово расстояние (то есть длина отрезка между точками).
Качество работы такого классификатора зависит от выбора параметра $$$k$$$. Чтобы найти хорошее значение $$$k$$$, можно использовать следующий простой способ. Посмотрим, какие ответы при разных $$$k$$$ будут получаться для наших входных точек (для которых заранее известны правильные ответы), и выберем то значение $$$k$$$, при котором правильных ответов будет наибольшее количество. Такой метод называется «LOO-кросс-валидация».
Поясним работу этого метода подробнее. Переберём все нечётные значения $$$k$$$ в диапазоне от $$$1$$$ до $$$n-1$$$. Для каждого такого $$$k$$$ переберём все точки. Для каждой из них найдём $$$k$$$ ближайших к ней других точек (её саму не учитываем), возьмём цвет, который встречается среди них чаще, и сравним его с настоящим цветом этой точки. Чем больше верных ответов получилось для текущего значения $$$k$$$, тем это значение лучше. Разумеется, для повышения эффективности можно изменить описанную реализацию алгоритма — главное, чтобы при этом результаты остались правильными.
Напишите программу, которая для каждого нечётного $$$k$$$ в диапазоне от 1 до $$$n$$$ определит, для скольких точек будет верно определён цвет при данном $$$k$$$ в ходе LOO-кросс-валидации.
В первой строке входных данных записано целое число $$$n$$$ ($$$2 \le n \le 1000$$$).
В следующих $$$n$$$ строках записаны тройки чисел $$$x_i$$$, $$$y_i$$$ и $$$c_i$$$ — координаты очередной точки ($$$-20000 \le x_i, y_i \le 20000$$$) и её цвет $$$c_i$$$ (равный либо 0, либо 1).
Гарантируется, что никакие две точки не совпадают и расстояния между всеми парами точек различны.
Выведите количество верно классифицированных точек для $$$k=1$$$, $$$k=3$$$, $$$k=5$$$ и так далее до $$$n-1$$$ (а если $$$n-1$$$ чётно, то до $$$n-2$$$). Сами значения $$$k$$$ выводить не нужно.
41 2 0-3 1 10 0 14 5 0
2 0
Подзадача 1 (до 30 баллов): $$$n \le 50$$$.
Подзадача 2 (до 30 баллов): $$$n \le 200$$$.
Подзадача 3 (до 40 баллов): $$$n \le 1000$$$.
Примечание для пишущих на языке Python. Ввести три числа через пробел можно так:
x, y, c = [int(x) for x in input().split()]