mooktian @ 2023-12-15 10:52:59
第一个测试点,就RE,我下载了数据,检查都没有问题啊,不知道这个RE怎么来的,检查了数组下标也没有越界啊。 第一个点: 10 5 8 5 18 12 18 12 10 7 15 1 输出: 0 8 5 5 5 5 5 10 7 7
我反复对过了,都对啊,怎么就RE了。
by mooktian @ 2023-12-15 10:53:38
下面是代码:
#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 xiaoshumiao @ 2023-12-15 11:25:04
@mooktian xpush 函数没有返回值。这种情况不开 O2 正常,开 O2 会 RE。验证码 xfre 祭。
by xiaoshumiao @ 2023-12-15 11:27:27
@mooktian 改成 void 就可以了。
by mooktian @ 2023-12-15 12:42:51
@xiaoshumiao 谢谢!