求调
查看原帖
求调
1248522
mlvx楼主2024/8/3 18:23
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m,res,ans,ANS,t[200002],le[200002],ri[200002];
main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++)cin>>t[i];
	sort(t+1,t+n+1);
	for(int i=1;i<=n;i++)i==1?le[1]=t[1]:le[i]=max(t[i],t[i-1]+m),i==n?ri[n]=t[n]+m-1:ri[i]=min(t[i]+m-1,t[i+1]-1),res+=max(ri[i]-le[i]+1,0ll);
	//cout<<res<<'\n';
	for(int i=1;i<=n;i++){
		ans=res-max(ri[i]-le[i]+1,0ll)+m;
		ans+=(i==1?0:max(min({t[i+1]-1,t[i-1]+m-1/*,le[i]-1*/})-ri[i-1],0ll))+(i==n?0:max(le[i+1]-max({/*ri[i],*/t[i+1],t[i-1]+m}),0ll));
		//cout<<(i==1?0:max(min({t[i+1]-1,t[i-1]+m-1,le[i]-1})-ri[i-1],0ll))<<' '<<(i==n?0:max(le[i+1]-max({ri[i],t[i+1],t[i-1]+m}),0ll))<<'\n';
	//	cout<<ans<<' '<<i<<'\n';
		ANS=max(ANS,ans);
	}
	cout<<ANS;
	return 0;
}
2024/8/3 18:23
加载中...