最大连续许子列和
#pragma warning(disable:4996)
#include<iostream>
#include<string>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
int n,a[10010],dp[10010],s[10010];
scanf("%d", &n);
int flag = 1;
for (int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
if (a[i] >= 0)
{
flag = 0;
}
}
if (flag)
{
printf("0 %d %d", a[0], a[n - 1]);
return 0;
}
dp[0] = a[0];
for (int i = 1; i < n; i++)
{
if (dp[i - 1] + a[i] > a[i])
{
dp[i] = dp[i - 1] + a[i];
s[i] = s[i - 1];
}
else
{
dp[i] = a[i];
s[i] = i;
}
}
int max = -999,temp=0;
for (int i = 0; i < n; i++)
{
if (dp[i] > max)
{
max = dp[i];
temp = i;
}
}
printf("%d %d %d", max, a[s[temp]], a[temp]);
}```