求助,快要死了的70分
查看原帖
求助,快要死了的70分
733569
chensiming_2022楼主2022/9/4 20:10

萌新太傻,只会用两个尺取来解,大佬来帮帮呗

#include<bits/stdc++.h>
#define int long long
using namespace std;
int s,n,val[100007];
struct maxxx{
	int maxx,r,l;  
};
int saby_weidaima(){
    maxxx max1,max2;
    max1.maxx=max2.maxx=0;
	for(int l=1,r=0;l<=n;l++){
		while(r<=n&&val[r]-val[l]<=s)
		    ++r;
		if(max1.maxx<r-l)
			max1={r-l,r,l};
	}
	int ll=0;
	for(int l=1,r=0;l<=n;l++){
		if(l>=max1.l&&l<max1.r)
		    continue;
		ll=0;
		while(r<=n&&val[r]-val[l]<=s){
			if(r>=max1.l&&r<max1.r)
			    ++ll;
			++r;
		}
		r-=ll;
		if(max2.maxx<r-l)
			max2={r-l,r,l};

	}
	return max2.maxx+max1.maxx;
}
signed main(){
	scanf("%lld%lld",&n,&s);
	for(int i=1;i<=n;i++)
		scanf("%lld",val+i);
	val[n+1]=2e9+1e8;
	sort(val+1,val+n+2);
	printf("%lld\n",saby_weidaima());
}


2022/9/4 20:10
加载中...