求助50分
查看原帖
求助50分
235901
Always_Remember_It楼主2023/9/24 17:18
#include <bits/stdc++.h>
using namespace std;
#define int unsigned long long
const int N=1e6+10;
int a[N];
struct Node{int num,id;};
signed main(){
	int n,k;cin>>n>>k;
	for(int i=1;i<=n;i++) cin>>a[i];
	deque<Node> Q; 
	Q.push_back((Node){a[1],1});
	int l=1,r=1;
	for(int i=2;i<=n+1;i++){
		if(i>k) printf("%d\n",r-l+1);
		if(i>n) return 0;
		if(r-l+1==k){
			Q.pop_front();
			l=Q.front().id;
		}
		while(!Q.empty()){
			if(a[i]>=Q.back().num) Q.pop_back();
			else break;
		} 
		if(Q.empty()) l=i,r=i-1;
		Q.push_back((Node){a[i],i});
		++r;
	}
}
2023/9/24 17:18
加载中...