90,第八个点少输出了1,求调
查看原帖
90,第八个点少输出了1,求调
422799
Clarence_Zhu楼主2022/9/2 21:23
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
int n,b,k,cnt;
int t[maxn];
deque<int> q;
int ans=maxn;
int s[maxn];
int main(){
	cin>>n>>k>>b;
	for(int i=1;i<=b;i++){
		int x;
		cin>>x;
		if(s[x])
			continue;
		t[++cnt]=x;
		s[x]=1;
	}
	sort(t+1,t+1+b);
	q.push_back(0);
	for(int i=1;i<=cnt;i++){
		while(!q.empty()&&t[i]-q.front()>k){
			q.pop_front();
			ans=min(ans,(int)q.size());
		}
		if(!q.empty()&&t[i]-q.front()>=k){
			q.pop_front();
			ans=min(ans,(int)q.size());			
		}
//		while((int)q.size()>ans){
//			q.pop_front();
//		}
		q.push_back(t[i]);
//		cout<<q.size()<<endl;
	}
	q.clear();
	q.push_back(n);
	for(int i=cnt;i>=0;i--){
		while(!q.empty()&&q.front()-t[i]>k){
			q.pop_front();
			ans=min(ans,(int)q.size());
		}
		if(!q.empty()&&q.front()-t[i]>=k){
			q.pop_front();
			ans=min(ans,(int)q.size());			
		}
//		while((int)q.size()>ans){
//			q.pop_front();
//		}
		q.push_back(t[i]);
//		cout<<q.size()<<endl;
	}
	if(ans==maxn) ans=b;
	cout<<ans<<endl;
	return 0;
}
2022/9/2 21:23
加载中...