救救孩子吧!第二个点WA
查看原帖
救救孩子吧!第二个点WA
424504
I_do_love_math楼主2023/4/4 15:56
#include<bits/stdc++.h>
using namespace std;
long long n,a[200010];
long long abc(long long left,long long right){
	if(left==right){
		if(a[left]>0) return a[left]; 
		else return 0;
	}
	long long mid=(left+right)/2;
	long long ans1=abc(left,mid);
	long long ans2=abc(mid+1,right);
	long long s1=0,max1=-100005;
	for(int i=mid;i>=left;i--){
		s1+=a[i];
		max1=max(max1,s1);
	} 
	long long s2=0,max2=-100005;
	for(int i=mid+1;i<=right;i++){
		s2+=a[i];
		max2=max(max2,s2);
	}
	long long ans3=max1+max2;
	return max(max(ans1,ans2),ans3);
} 
int main(){
	scanf("%lld",&n);
	for(long long i=1;i<=n;i++) 					scanf("%lld",&a[i]);
	printf("%lld",abc(1,n));
	return 0;
}
2023/4/4 15:56
加载中...