Código de Roger Benet, comentários de Rogério Júnior
Vamos simular o problema, ordenando as árvores por suas quantidades iniciais de frutos, para retirarmos as mortas de maneira eficiente.
Seja o vetor em que guardaremos quantos frutos cada árvore deu no dia anterior ao início da safra. Ordenaremos e simularemos cada dia da safra. Em cada dia, será a soma de todos os frutos dados no dia anterior ao início da safra por todas as árvores que ainda estão vivas, será a quantidade de árvores vivas, será a posição em da menor árvore que ainda está viva e é quantos frutos, a mais ou a menos, cada árvore dará em relação a como começou a safra.
Seja a resposta do problema (deveremos salvá-la como ). Para simularmos um dia da safra, primeiro leremos o caractere que diz se houve chuva ou estiagem. Se tiver chovido, todas as árvores vivas darão um fruto a mais, ou seja, o valor de aumentará em uma unidade. Se, porém, houver estiagem, todas as árvores vivas produzirão um fruto a menos, logo o valor de decresce em uma unidade. Se alguma árvore pode ter morrido. Como o número de frutos que a árvore dá é , uma árvore terá morrido neste dia se . Sabendo isso, procuraremos em as árvores que já morreram. Partindo da árvore viva que está dando menos frutos (a da posição ) para a direita, se a árvore que estamos olhando tiver morrido, o valor de diminui uma unidade, o de aumenta uma unidade (pois agora a árvore viva com menos frutos está uma posição à direita) e subtraímos a sua quantidade original de frutos do valor de , visto que esta soma é apenas para árvores vivas. Se a árvore não tiver morrido, não precisaremos procurar mais, pois todas à sua direita têm mais frutos que ela. No fim do dia, adicionamos a a colheita do dia, que será .
Após a simulação, basta imprimirmos o valor de . Segue o código adaptado do nosso leitor Roger Benet como solução para o problema proposto.