萌新求大佬!!!!!!!40pts~
查看原帖
萌新求大佬!!!!!!!40pts~
658786
STUDENT00楼主2022/8/24 20:51

code:

#include<bits/stdc++.h>
using namespace std;
int n,a[200010],maxs=-1e9;
int work(){
	int sum,dp1[200010]={0},dp2[200010]={0},ans=-1e9;
	sum=0;
	for(int i=1;i<=n;i++){
		if(sum+a[i]>0) sum+=a[i];
		else sum=0;
		dp1[i]=max(dp1[i-1],sum);
	}
	sum=0;
	for(int i=n;i>=1;i--){
		if(sum+a[i]>0) sum+=a[i];
		else sum=0;
		dp2[i]=max(dp2[i+1],sum);
	}
	for(int i=0;i<=n;i++) ans=max(ans,dp1[i]+dp2[i+1]);
	return ans;
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	for(int i=1;i<=n;i++){
		maxs=max(maxs,work());
		int t=a[1];
		for(int j=1;j<n;j++) a[j]=a[j+1];
		a[n]=t;
	}
	if(maxs==0){
		sort(a+1,a+n+1);
		printf("%d",a[n-1]+a[n]);
	}else printf("%d",maxs);
	return 0;
}
2022/8/24 20:51
加载中...