E26: Problema de Josephus e segmento de soma máxima

E26.1  Imagine n pessoas dispostas em círculo. Suponha que as pessoas estão numeradas 1n no sentido horário. Começando com a pessoa de número 1, percorra o círculo no sentido horário e elimine cada m-ésima pessoa enquanto o círculo tiver duas ou mais pessoas. Qual o número do sobrevivente? 

Dica: use uma lista encadeada circular. Escreva duas funções auxiliares: uma para construir a lista inicial e outra para fazer o processo de eliminações sucessivas.

E26.2  A soma de um segmento v[i..k] de um vetor v[1..n] é o número v[i] + v[i+1] + ... + v[k]. A altura de um vetor v[1..n] é a soma de um segmento não vazio de soma máxima, ou seja, a maior soma da forma v[i] + v[i+1] + ... + v[k] com 1 ≤ i ≤ k ≤ n

Exemplo: Um dos segmentos do vetor abaixo tem soma 15 - 10 + 30 = 35.  Será essa a altura do vetor? Ou existe algum segmento com soma maior que 35?

       20  -30  15  -10  30  -20  -30   30

Problema: Calcular a altura de um vetor v[1..n] de números inteiros. Escreva o algoritmo mais eficiente que puder para o problema.