Ctrl K

Очки за то, что осталось

Средняя
В ряд лежат плитки, на i-й написано число tiles[i]. Двое игроков ходят по очереди, начинает первый. За ход игрок снимает крайнюю плитку — самую левую или самую правую — и получает столько очков, какова сумма чисел на плитках, **оставшихся** в ряду после его хода. Игра заканчивается, когда плиток не остаётся. Второй игрок знает, что ему не выиграть, поэтому старается, чтобы разница в очках была как можно меньше, а первый — чтобы она была как можно больше. Оба играют наилучшим образом. Верните итоговую разницу: очки первого минус очки второго.
Пример 1
tiles=[2, 7, 3] → 3

Первый снимает 2 и получает 7 + 3 = 10. Второму выгоднее снять 3 и получить 7, после чего первый снимает 7 и получает 0. Разница 10 − 7 = 3; остальные варианты первого дают ему меньше.

Пример 2
tiles=[4, 4] → 4

Первый снимает любую плитку и получает 4, второй снимает последнюю и получает 0.

Пример 3
tiles=[6, 1, 5, 2] → 11
Ограничения
  • 2 ≤ len(tiles) ≤ 1000
  • 1 ≤ tiles[i] ≤ 1000
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиДуэль за крайние карты СредняяДуэль за крайние кучки СредняяРастущий лимит на сундуки СредняяБери из любой кучки СредняяБери до трёх карт Сложная
загружаем Python…
Вход
tiles=[2, 7, 3]
Ожидается
3

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 99 тестов на сервере, включая скрытые.