Большая хурма

Для начала заметим две полезные вещи:

Для начала решим задачу за $$$O(n^2 \cdot \max\limits_i(w_i))$$$, используя динамическое программирование:

Обозначим dp[l][r][dif] = разность между тем, сколько возмет первый и тем, сколько возьмет второй, если будут играть на отрезке элементов [l, r], при чем первый начнет есть через dif секунд, после второго (dif может быть отрицательным)

Тогда база динамики: dp[i][i-1][dif] = 0, и ответ лежит в dp[0][n-1][0]

От знака dif зависит, кто будет первым принимать решение о том, какой кусочек взять. Таким образом пересчеты:

Для dif $$$\le 0$$$: dp[l][r][dif] = $$$\max$$$ из

Для для dif $$$> 0$$$: dp[l][r][dif] = $$$\min$$$ из

В такой динамике |dif| $$$\le \max\limits_i(w_i)$$$, то есть всего $$$O(n^2 \cdot \max\limits_i(w_i))$$$ состояний и по 2 перехода из каждого.

Чтобы решить подгруппы с ограничением $$$w_{i+1} \le 2 \cdot w_i$$$ докажем следующий факт: в таких ограничениях, для любого достижимого состояния (l, r, dif) выполнено |dif| $$$\le w_{r+1}$$$, (исключение: если $$$r = n - 1$$$, то |dif| $$$\le w_{n-2}$$$)

Чтобы это доказать, заметим, что при любом переходе dif меняется в сторону нуля, то есть его модуль либо уменьшается, либо становится не больше, чем $$$w_i$$$ (где $$$w_i$$$ - последний взятый кусочек). Таким образом, при переходах [l, r] $$$\to$$$ [l+1, r] соотношение сохраняется в любом случае, а при переходе [l, r] $$$\to$$$ [l, r-1] сохраняется, так как $$$w_{r+1} \le 2 \cdot w_r$$$

Таким образом, для каждого $$$l$$$ существует всего $$$O(\sum\limits_{i=0}^{n-1} w_i) = O(W)$$$ достижимых пар {r, dif}, то есть всего $$$O(n \cdot W)$$$ состояний, и два перехода из каждого.

Теперь, чтобы решить полную задачу, поменяем переходы в динамике так, чтобы они сохраняли соотношение |dif| $$$\le w_{r+1}$$$

Для этого заметим, что если один человек взял несколько кусочков до передачи хода оппоненту, он всегда мог это сделать, сначала взяв самые маленькие кусочки, а затем самые большие. В связи с этим, оставим переход [l, r] $$$\to$$$ [l+1, r], так как они сохраняют инвариант, а вместо переходов [l, r] $$$\to$$$ [l, r-1], добавим переходы [l, r, dif] $$$\to$$$ [l, r', dif'], то есть возьмем столько наибольших элементов, чтобы ход перешел оппоненту, или игра закончилась.

Такие переходы сохраняют инвариант |dif| $$$\le w_{r+1}$$$, то есть в такой динамике $$$O(n \cdot W)$$$ состояний, и всё ещё два перехода из каждого.

Заметим так же, что значения $$$r'$$$ зависят только от r и dif, но не от l, то есть их можно насчитать за $$$O(W \cdot \log(n))$$$.

Полученное решение работает за $$$O(n \cdot W)$$$, чего достаточно, чтобы пройти все тесты.