GRID//RUNNER

BURST BALLOONS HARD

problema

Há n balões em fila, e o balão i tem o número nums[i] pintado. Você vai estourar todos, um de cada vez, na ordem que quiser. Estourar o balão i rende nums[esq] · nums[i] · nums[dir] moedas, onde esq e dir são os vizinhos que ainda estão de pé naquele momento. Se faltar vizinho de um lado (passou da ponta), ele vale 1.

Retorne o máximo de moedas que dá para juntar.

Exemplo 1 · nums = [3, 1, 5, 8] → 167

Estourando na ordem 1, 5, 3, 8: 3·1·5 + 3·5·8 + 1·3·8 + 1·8·1 = 15 + 120 + 24 + 8 = 167.

Exemplo 2 · nums = [1, 5] → 10

Estoure o 1 primeiro (1·1·5 = 5) e depois o 5 (1·5·1 = 5). Ao contrário daria só 5 + 1 = 6.

Restrições: 1 ≤ n ≤ 300 · 0 ≤ nums[i] ≤ 100