谁来帮帮我,过不去了
查看原帖
谁来帮帮我,过不去了
753736
rudyhanhan楼主2023/2/9 18:48
using namespace std;

int p[ 100000002],s[100000002],k;   
priority_queue<int, vector<int>, less<int> >gd;    


int main(){
   
//	freopen("P3143_4.IN","r",stdin);
	int n,c=0;
	cin>>n;
	cin>>k;
	for(int i=0;i<n;i++){         //输入 
		int b=0;
		cin>>b;
		if(b>c){ //c为最大值 
			c=b;
		}
		p[b]+=1;
		
	}
	int d,z=0;
	int b=0;
	s[0]=p[0];
	for(int i=1;i<=k;i++){    //第一架子 
		if(k==1){
			continue; 
		}
		s[i]=s[i-1]+p[i];
		if(s[i]>=b){
			b=s[i];
			z=i;
		}
	}
	
	for(int i=k+1;i<=c;i++){
		s[i]=s[i-1]+p[i]-p[i-k-1];
		if(s[i]>=b){
			b=s[i];
			z=i;
		}
	}
	for(int i=z-5;i<=z;i++){  //清空 
		if(i<0){continue;}
		p[i]=0;
	}
	
	z=b;b=0; 
	for(int i=1;i<=k;i++){//第二架子 
		if(k==1){
			continue; 
		}
		s[i]=s[i-1]+p[i];
		if(s[i]>=b){
			b=s[i];
			
		}
	}
	
	for(int i=k+1;i<=c;i++){
		s[i]=s[i-1]+p[i]-p[i-k-1];
		if(s[i]>=b){
			b=s[i];		
		}
	}

	


	cout<<z+b;

	//fclose(stdout);
	return 0;

}




 
2023/2/9 18:48
加载中...