//这个题也有点坑,没考虑最大值为负的情况
//第983题要把数组开的大点
#include <iostream>
using namespace std;
long long fun();
int n;
long long a[50010];
int main()
{
while(cin >> n)
{
for(int i = 0; i < n; i++)
cin >> a[i];
cout << fun() << '\n';
}
}
long long fun()
{
long long s1 = -1 << 30, s2 = 1 << 30, s = 0;
long long t1 = 0, t2 = 0;
for(int i = 0; i < n; i++)
{
s += a[i];
t1 += a[i];
s1 = s1 > t1 ? s1 : t1;
if(t1 < 0)
t1 = 0;
t2 += a[i];
s2 = s2 < t2 ? s2 : t2;
if(t2 > 0)
t2 = 0;
}
return max(s1, s-s2);
}
南阳理工OJ_题目745 蚂蚁的难题(二)&&题目983 首尾相连数组的最大子数组和
最新推荐文章于 2022-04-23 15:15:04 发布