73分求条(单调队列)
查看原帖
73分求条(单调队列)
1063811
gwg725楼主2024/12/16 19:31
#include <bits/stdc++.h>
using namespace std;
const int N=2e7+2;
deque<int> q;
int a[N],d[N];
signed main()
{
	int n,m;
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	puts("0");
	q.push_front(0); 
	for(int i=1;i<=n-1;i++){
		if(a[i]>=a[q.back()]){
			if(a[q.front()]==0) q.pop_front();
			q.push_back(i);
		}
		else{
			while(a[q.back()]>a[i]) q.pop_back();
			q.push_back(i);
		}
		if(i-q.front()>=m) q.pop_front();
		printf("%d\n",a[q.front()]);
	} 
	return 0; 
} 
2024/12/16 19:31
加载中...