#include <stdio.h>
#define min(a,b) (((a) < (b)) ? (a) : (b));
#define max(a,b) (((a) > (b)) ? (a) : (b));
int main(void)
{
int ar[] = {31, -41, 59, 26, -53, 58, 97, -93, -23, 84}; // Наш массив.
int size = sizeof(ar) / sizeof(ar[0]); // Определяем его размер.
int result = 0; // Сюда поместим результат.
int minSum = 0; // Сюда будем класть минимальную сумму элементов [0..i-1] внутри цикла.
int curSum = 0; // Сюда будем накапливать сумму элементов [0..i], S(i).
for (int i = 0; i < size; ++i)
{
minSum = min(minSum, curSum);
curSum += ar[i];
result = max(result, curSum - minSum);
}
// Выводим результаты.
printf("\nMaximum summ = %d\n", result
);
return 0;
}