To jeden z podstawowych i całkiem fajnych problemów algorytmicznych. Charakteryzuje się tym, że istnieje na niego masa różnych rozwiązań. Od najgorszych o złożoności O(n^3) gdzie przechodzisz całą tablicę sprawdzając każdą możliwą sumę na przedziale. Przez trochę szalone rozwiązania rekurencyjne o złożoności O(n log n) - (tu algorytm jest trochę dziwny i jest można powiedzieć trochę sztuką dla sztuki, więc nie będę się rozwodzić, jeśli byś jednak bardzo chciał to daj znać w komentarzu)... aż wreszcie najbardziej efektywny algorytm (i o dziwo koncepcyjnie na prawdę baaaarrrdzooo prosty) o złożoności liniowej: O(n).
W ostatnim z powyższych wystarczy zastosować coś takiego: idę sobie po tablicy od lewej do prawej zliczając sumę liczb, które napotkałem. Jednocześnie mam zmienną, w której pamiętam największą do tej pory napotkaną sumę liczb. Przy każdym kroku, jeśli suma się powiększyła aktualizuje tego mojego maxa. Nie ma co się przejmować ujemnymi liczbami, bo liczby dodatnie następujące po nich (tak jak i w Twoim przykładzie) mogą, że tak powiem "zadość uczynić" za te ujemne. Ale uwaga! Jeśli w pewnym momencie suma stanie się ujemna to w aktualnej sumie zapominamy o wszystkich liczbach do tej pory, bo wiadomo, że nie opłaca nam się ich brać, bo tylko obniżają potencjalną sumę.
Pozdrawiam,