分治解法 #2 WA求条
查看原帖
分治解法 #2 WA求条
1073879
Karl_Wan楼主2025/8/3 19:45
#include <iostream>
using namespace std;
const long long N=2*1e5+10;
long long a[N],n;
long long maxsum(long long l,long long r)
{
	if(l==r) return a[l]; 
	long long mid=(l+r)>>1;
	long long maxs=maxsum(l,mid);maxs=max(maxs,maxsum(mid+1,r));
	long long L=0,R=0,x=0;
	for(long long i=mid+1;i<=r;i++) R=max(R,x+=a[i]);
	x=0;
	for(long long i=mid;i>=l;i--) L=max(L,x+=a[i]);
	return max(maxs,L+R);
}
int main()
{
	cin>>n;
	for(long long i=1;i<=n;i++)
	{
		cin>>a[i];
		
	}
	cout<<maxsum(1,n)<<'\n';
	
	return 0;
} 
2025/8/3 19:45
加载中...