给定 n 个整数组成的序列 { a1,a2,⋯,an },“连续子序列”被定义为 { ai,ai+1,⋯,aj },其中 1≤i≤j≤n。“连续子序列最大和”则被定义为所有连续子序列元素的和中最大者。例如给定序列 { -2, 11, -4, 13, -5, -2 },其连续子序列 { 11, -4, 13 } 有最大的和 20。请编写程序,计算给定整数序列的连续子序列最大和。
本题旨在测试各种不同的算法在各种数据情况下的表现。各组测试数据特点如下:
- 数据 0~6:测试基本正确性;
- 数据 7:103 个随机整数;
- 数据 8:104 个随机整数;
- 数据 9:105 个随机整数。
输入格式:
输入第一行给出正整数 n (≤105);第二行给出 n 个整数,绝对值均不超过 100,其间以空格分隔。
输出格式:
在第一行中输出连续子序列最大和,第二行输出该子序列首尾的数组下标(从 0 开始),以 1 个空格分隔。若解不唯一,则输出最小的数组下标(如样例所示)。
注意:如果序列中所有整数皆为零或负数,则取空子列的结果是最大的,为 0;此时空子序列数组首尾的下标均为 -1。
输入样例:
10
-10 2 2 3 4 -5 -23 4 7 -21
输出样例:
11
1 4