function maxsum(l, u)
if l > u
return 0 /* пустой массив */
if l == u /* 1 элемент */
return max(0, x[l])
m = (l + u) / 2
/* поиск макс. последовательности
слева от границы: */
lmax = sum = 0
for i = m downto l
sum += x[i]
lmax = max(lmax, sum)
/* поиск макс. последовательности
СПРАВА от границы: */
rmax = sum = 0
for i = m + 1 to u-1
sum += x[i]
rmax = max(rmax, sum)
return max(lmax+rmax, // =>Mc
maxsum(l, m) // =>Ma
maxsum(m+1, u)) // =>Mb
/* А теперь запуск всего алгоритма */
answer = maxsum(0, n-1)