Solução Informática Intermediário – Semana 64

por

Solução por Leonardo Paes

Para resolver este problema, utilizaremos programação dinâmica.

Seja $$dp[i][j]$$ a soma máxima de alturas de um time que começa com o $$j$$-ésimo estudante da fileira $$i$$ e pode escolher jogadores com índices maiores que $$j$$. Logo, a resposta de nosso problema será: $$max(dp[1][1], dp[2][1])$$.

Seja $$i’$$ uma representação da fileira oposta a fileira $$i$$, ou seja, se $$i = 1, i’ = 2$$, e vice-versa. Para calcularmos a recursão, teremos: $$dp[i][j] = h[i][j] + max(dp[i’][j+1], dp[i’][j+2])$$, onde $$h[i][j]$$ é a altura do $$j$$-ésimo estudante da fileira $$i$$.

Segue abaixo o código para melhor entendimento:

https://gist.github.com/Rockbet/79a3afcc1b7a822171979f3d765ebadc