Як фанат найбільш успішної футбольної команди BE , наприкінці сезону я часто задаюся питанням, чи є у моєї улюбленої команди ще якийсь теоретичний шанс стати чемпіоном. Ваше завдання в цьому виклику - відповісти на це питання для мене.
Вхідні дані
Ви отримаєте три входи: поточну таблицю, список решти матчів та поточну позицію команди, яка нас цікавить.
Input 1: поточна таблиця , послідовність чисел , були я -й числом є точками , отриманої командою я до сих пір. Наприклад, вхід
[93, 86, 78, 76, 75]кодує наступну таблицю (важливий лише останній стовпець):
Введення 2 : Решта матчів , послідовність кортежів, де кожен кортеж ( i , j ) означає збіг між командою i та j . У наведеному вище прикладі другий вклад [(1,2), (4,3), (2,3), (3,2), (1,2)]означатиме, що решта збігів:
Chelsea vs Tottenham, Liverpool vs Man. City, Tottenham vs Man. City, Man. City vs Tottenham, Chelsea vs Tottenham
Input 3: поточний стан . Команди ми зацікавлені в тому, наприклад, введення 2для наведеного вище прикладу буде означати, що ми хотіли б знати , чи може Тоттенхем ще стати чемпіоном.
Вихідні дані
Для кожного решти збігів форми ( i , j ) є три можливі результати:
- Команда i виграє: Команда i отримує 3 бали , команда j отримує 0 балів
- Перемагає команда j : Команда i отримує 0 балів , команда j отримує 3 бали
- Нічия: Команда i і j отримують 1 бал
Ви маєте вивести триєдне значення, якщо є результат у всіх іграх, що залишаються такими, що в кінці кінців жодна інша команда не має більше очок, ніж команда, визначена на третьому вході. В іншому випадку виведіть помилкове значення.
Приклад : Розглянемо зразковий вхід із наведеного вище розділу:
Вхід 1 = [93, 86, 78, 76, 75], Вхід 2 = [(1,2), (4,3), (2,3), (3,2), (1,2)], Вхід 3 =2
Якщо команда 2виграє всі свої залишки (тобто (1,2), (2,3), (3,2), (1,2)), вона отримує 4 * 3 = 12 додаткових очок; жодна з інших команд не отримує балів з цих матчів. Скажімо, інший матч, що залишився (тобто (4,3)) - нічия. Тоді кінцевими балами будуть:
Team 1: 93, Team 2: 86 + 12 = 98, Team 3: 78 + 1 = 79, Team 4: 76 + 1 = 77, Team 5: 75
Це означає, що ми вже знайшли певний результат для решти матчів, так що жодна інша команда не має більше очок, ніж команда 2, тому вихід для цього введення повинен бути правдивим.
Деталі
- Ви можете вважати, що перший вхід є впорядкованою послідовністю, тобто для i < j , i -й запис дорівнює або більший, ніж j -й запис. Перший вхід може сприйматись як список, рядок тощо.
- Ви можете взяти другий вхід як рядок, список кортежів тощо. Крім того, ви можете прийняти його як двовимірний масив,
aдеa[i][j]кількість записів форми(i,j)у списку решти збігів. Наприклад,a[1][2] = 2, a[2][3] = 1, a[3][2] = 1, a[4][3] = 1відповідає[(1,2), (4,3), (2,3), (3,2), (1,2)]. - Для другого та третього введення ви можете припустити 0-індексування замість 1-індексації.
- Ви можете взяти три входи в будь-якому порядку.
Вкажіть, будь ласка, точний формат введення, який ви вибрали у своїй відповіді.
Бічний вузол : Проблема, що лежить в основі цього виклику, виявилася повною в NP у " Елімінації у футболі важко вирішити за правилом 3-х балів ". Цікаво, що якщо за перемогу присуджуються лише два бали, проблема стає вирішуваною в поліноміальний час.
Випробування
Всі тестові випадки в форматі Input1, Input2, Input3.
Truthy:
[93, 86, 78, 76, 75],[(1,2), (4,3), (2,3), (3,2), (1,2)],2[50],[],1[10, 10, 10],[],3[15, 10, 8],[(2,3), (1,3), (1,3), (3,1), (2,1)],2
Фальсі:
[10, 9, 8],[],2[10, 9, 9],[(2,3), (3,2)],1[21, 12, 11],[(2,1), (1,2), (2,3), (1,3), (1,3), (3,1), (3,1)],2
Переможець
Це код-гольф , тому найкоротша правильна відповідь (у байтах) виграє. Переможець буде обраний через тиждень після опублікування першої правильної відповіді.
