Max Sum
Description
Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a sub-sequence. For example, given (6,-1,5,4,-7), the max sum in this sequence is 6 + (-1) + 5 + 4 = 14.
Output
For each test case, you should output two lines. The first line is "Case #:", # means the number of the test case. The second line contains three integers, the Max Sum in the sequence, the start position of the sub-sequence, the end
position of the sub-sequence. If there are more than one result, output the first one. Output a blank line between two cases.
Sample Output
Case 1:
14 1 4
Case 2:
7 1 6
#include<iostream>
using namespace std;
int a[100000];
void maxSubSum(int a[], int n){
int maxSum=-1001, thisSum=-1001, start=0, end=0, p=0;
for(int i=0; i<n; i++){
if(thisSum + a[i] <a[i]){
thisSum = a[i];
p = i;
}
else thisSum += a[i];
if(thisSum > maxSum){
maxSum = thisSum;
start = p;
end = i;
}
}
cout<<maxSum<<" "<<start+1<<" "<<end+1<<endl;
}
int main(){
int t, i;
cin>>t;
for(i=1; i<=t; i++){
int n;
cin>>n;
for(int j=0; j<n; j++) cin>>a[j];
if(i!=1) cout<<endl;
cout<<"Case "<<i<<":"<<endl;
maxSubSum(a, n);
}
return 0;
}