Ctrl K

Слияние плиток спереди

Сложная
В ряд лежат плитки с целыми числами — массив tiles. Алиса и Боб ходят по очереди, первой ходит Алиса. Пока в ряду больше одной плитки, игрок своим ходом: - выбирает целое x > 1 и снимает x крайних левых плиток; - прибавляет сумму чисел на них к своим очкам; - кладёт в начало ряда новую плитку с этой суммой. Когда в ряду остаётся одна плитка, игра заканчивается. Алиса стремится сделать разность (очки Алисы) − (очки Боба) как можно больше, Боб — как можно меньше. Верните эту разность при оптимальной игре обоих.
Пример 1
tiles=[3, -1, 4, -2] → 4

Алиса сразу сливает все плитки и получает 3 − 1 + 4 − 2 = 4, у Боба 0. Если она сольёт три плитки (+6), Боб сольёт оставшиеся две (+4) и разница будет 2; если две (+2), Боб сольёт всё (+4) и разница будет −2.

Пример 2
tiles=[-5, -6] → -11

Ход один: Алиса обязана слить обе плитки и получает −11.

Пример 3
tiles=[2, -3, 1] → 0

Слить всё — разница 0. Слить две первые (−1) — тогда Боб сольёт оставшиеся и получит 0, разница −1. Алиса выбирает 0.

Ограничения
  • 2 ≤ len(tiles) ≤ 10⁵
  • -10⁴ ≤ tiles[i] ≤ 10⁴
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиРастущий лимит на сундуки СредняяБери до трёх карт СложнаяОстаётся лёгкая половина СложнаяМышь, кот и сыр СложнаяСуммарная сила отрядов Сложная
загружаем Python…
Вход
tiles=[3, -1, 4, -2]
Ожидается
4

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