Ковариация очков и времени забега

тема: Описательная статистика · уровень: средний

Условие

На школьной спартакиаде секретарь записал результаты в две отдельные таблицы. В первой таблице указаны стартовые номера участников и набранные ими очки. Во второй таблице указаны стартовые номера и время финиша в секундах.

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

Для всех оставшихся k участников вычисляется генеральная ковариация очков x и времени y:

cov(x, y) = (1 / k) * Σ((xᵢ - x̄) * (yᵢ - ȳ)),

где — среднее число очков оставшихся участников, а ȳ — их среднее время. Затем определяется направление связи: positive, если ковариация больше нуля, negative, если она меньше нуля, и zero, если она равна нулю.

При равенстве ковариации нулю необходимо вывести слово zero. Гарантируется, что после исключения отсутствующих результатов останется хотя бы один участник.

Формат ввода

В первой строке даны два целых числа n и m — количество строк в таблице очков и количество строк в таблице времени соответственно.

В следующих n строках даны два целых числа bib и points — стартовый номер и число очков участника.

В следующих m строках даны два целых числа bib и time — стартовый номер и время финиша в секундах. Значение time = -1 означает отсутствие результата.

Стартовые номера внутри каждой таблицы не повторяются.

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

Выведите ковариацию с двумя знаками после точки, затем пробел и направление связи: positive, negative или zero.

Округление выполняется до ближайшего значения с двумя знаками после точки. Если число находится ровно посередине, модуль результата округляется в большую сторону.

Ограничения

1 ≤ n, m ≤ 2000.

1 ≤ bib ≤ 1 000 000.

0 ≤ points ≤ 100.

time = -1 или 600 ≤ time ≤ 3600.

После сопоставления таблиц и исключения строк с time = -1 количество участников k удовлетворяет условию 1 ≤ k ≤ 2000.

Решить задачу с автопроверкой на Python →

Куда дальше