全re了求助

P1440 求m区间内的最小值

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 谢谢!


|