70,求调
查看原帖
70,求调
897131
yangdezuo楼主2025/1/31 18:40

70分调不出来,我是不是废了……

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,x,a[100005],maxx,s[100005],ans,sum,t;
void dfs(int l,int r){
	if(l>r) return;
	ans=sum-(s[r]-s[l-1])+x*(r-l+1);
//	cout<<ans<<" "<<maxx<<" "<<l<<" "<<r<<endl;
	maxx=max(maxx,ans);
	if(a[l]>=x&&a[r]>=x)
		if(a[l]-x>a[r]-x) dfs(l+1,r);
		else if(a[l]-x<a[r]-x) dfs(l,r-1);
		else dfs(l+1,r-1);
	else if(a[l]>=x) dfs(l+1,r);
	else if(a[r]>=x) dfs(l,r-1);
	else if(a[l]<=a[r]) dfs(l,r-1);
	else if(a[l]>=a[r]) dfs(l+1,r);
//	else dfs(l+1,r),dfs(l,r-1);
//	dfs(l+1,r);
//	dfs(l,r-1);
}
signed main(){
	ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
	cin>>n>>x;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		s[i]=s[i-1]+a[i];
		if(a[i]>=x) t++;
	}
	if(x==0||t==n){
		cout<<s[n];
		return 0;
	}
	sum=ans=maxx=s[n];
	dfs(1,n);
	cout<<maxx;
}
2025/1/31 18:40
加载中...