下面是代码:
```
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int n,m;
int a[2000005];
deque<int> q;
int xpush(int x);
int minvalue(int x);
int main(){
cin >> n >> m;
for(int i = 1;i <= n;i++) scanf("%d",&a[i]);
for(int i = 1;i <= n;i++) {
printf("%d\n",minvalue(i));
}
return 0;
}
int xpush(int x) {
while(!q.empty() && q.back() > x) q.pop_back();
q.push_back(x);
}
int minvalue(int x) {
int r = x-1;
int l = r - m +1;
if(l <= 0) l = 1;
//特殊处理r = 0
if(r == 0) return 0;
int i = l,j = r;
q.clear();//队列清空
for(int i = l;i <=r;i++) {
xpush(a[i]);
}
return q.front();
}
```
by mooktian @ 2023-12-15 10:53:38
@[mooktian](/user/890321) xpush 函数没有返回值。这种情况不开 O2 正常,开 O2 会 RE。验证码 xfre 祭。
by xiaoshumiao @ 2023-12-15 11:25:04
@[mooktian](/user/890321) 改成 void 就可以了。
by xiaoshumiao @ 2023-12-15 11:27:27
@[xiaoshumiao](/user/1008513) 谢谢!
by mooktian @ 2023-12-15 12:42:51