Коэффициент детерминации для чеков
Условие
Для каждого чека известны фактическая сумма покупки и прогноз суммы, построенный моделью. В некоторых строках прогноз отсутствует.
Качество прогнозов измеряется коэффициентом детерминации R². В расчёт входят только чеки, у которых прогноз указан. Пусть их фактические суммы равны y₁, y₂, ..., yₘ, прогнозы равны p₁, p₂, ..., pₘ, а средняя фактическая сумма равна ȳ.
Значение метрики вычисляется по формуле R² = 1 − Σ(yᵢ − pᵢ)² / Σ(yᵢ − ȳ)². Если прогноз отсутствует, строка полностью исключается из обеих сумм. Строки с одинаковыми суммами считаются разными чеками и учитываются по отдельности. При равенстве фактической и прогнозной сумм соответствующий член первой суммы равен нулю.
Если в расчёт не вошло ни одного чека, вошёл ровно один чек или все вошедшие фактические суммы одинаковы, следует считать R² равным 0.
Формат ввода
В первой строке дано целое число n — количество чеков.
В следующих n строках записаны два значения: фактическая сумма чека y и прогноз p. Фактическая сумма является целым числом. Прогноз является целым числом либо символом -, обозначающим отсутствие прогноза.
Формат вывода
Выведите значение R² с ровно тремя знаками после точки.
Значение округляется до ближайшей тысячной. Если значение находится ровно посередине между двумя тысячными, округление производится от нуля.
Ограничения
1 ≤ n ≤ 4000.
0 ≤ y ≤ 1 000 000.
Если прогноз указан, то 0 ≤ p ≤ 1 000 000.
Длина каждого обозначения суммы не превышает 7 символов.
Решить задачу с автопроверкой на Python →
Куда дальше
- Python на олимпиадах — где языка хватает с запасом, а где начинают значить лимиты — с замерами
- БВИ по олимпиадам: в какие вузы берут — правила приёма вузов, разобранные построчно, со ссылкой на приказ у каждой строки
- Перечневые олимпиады: что это и что дают — весь перечень Минобрнауки: уровни, срок диплома, разрезы по предметам и классам