注意特殊情况:-1 0 0 -1
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main()
{
int n;
int x;
int first = 0;
int last = 0;
int tempfirst = 0;
int maxsum = 0;
int sum = 0;
bool again = false;
bool positive = false;
scanf("%d", &n);
for(int i = 0; i < n; i++)
{
scanf("%d", &x);
if(i == 0)
{
first = x;
if(x >= 0)
tempfirst = x;
}
if(x >= 0)
positive = true;
sum += x;
if(sum < 0)
{
sum = 0;
tempfirst = 0;
again = true;
}
else
{
if(again)
{
tempfirst = x;
again = false;
}
if(sum > maxsum)
{
maxsum = sum;
last = x;
first = tempfirst;
}
}
}
if(positive == false)
last = x;
else
{
if(maxsum == 0)
first = tempfirst;
}
printf("%d %d %d", maxsum, first, last);
return 0;
}