Xin ý kiến về các test case của bài toán

đề bài :
cho mảng a[n] số tự nhiên(3<= n <= 200000) , 1 số 1<= b <=50.
yêu cầu : kiểm tra xem có tồn tại phần tử thứ i scho max{a1,…,ai−1}−a[i] >= b và
max{ai+1,…,an}−ai >=b, nếu có tính giá trị :
max{a1,…,a[i−1]} - a[i] + max{a[i+1],…,an}−a[i]
VD cho mảng {3,5,4,7,2,5,4,6,9,8} và b=5 thì tại a[i]=2 có max{3,5,4,7} - 2 >=5 và
max{5,4,6,9,8}−2≥5.vì vậy in ra giá trị 7-2 + 9-2 = 12.
e làm theo cách tạo 2 mảng để tính 2 giá max phía bên phải và bên trái của phần tử thứ i tương ứng r nhưng mà đến khi test thì chỉ đúng trong một số case, mn có ai nghĩ ra case nào đặc biệt cho e biết để sửa code với ạ

#include<iostream>

using namespace std;

int main(){

    int n;

    int b;

    cin>>n>>b;

    int a[n];

    for(int i = 0 ; i < n ; i++){

        cin>>a[i];

    }

    int max1[n],max2[n];

    max1[0]=a[0];

    max2[n-1]=a[n-1];

    for(int i = 1 ; i < n ; i++){

        max1[i]=max1[i-1];

        if(max1[i]<=a[i])max1[i]=a[i];

    }

    for(int i = n-2 ; i >= 0 ; i--){

        max2[i] = max2[i+1];

        if(max2[i]<a[i])max2[i]=a[i];

    }

    int test = -1;

    for(int i = 1 ; i < n ; i++){

        if((max1[i-1]-a[i] >=b)&&(max2[i+1]-a[i] >= b)){

            test = max1[i-1]-a[i] + max2[i+1]-a[i];

        }

    }

    cout<<test;

}

2 posts were merged into an existing topic: Topic lưu trữ các post off-topic - version 3

Tiện thể có link bài bạn share test cho tiện với có 2 giá trị i thỏa mãn thi sao nhỉ

các test case của bài này chỉ có một giá trị i thỏa mãn thôi bạn, mình đã thử trường hợp nếu có nhiều i thì thêm điều kiện lấy giá trị lớn nhất thu được thì kết quả cũng k thay đổi

bài này O(n)
duyệt mảng tới đâu là biết max ở đó rồi, chỉ việc check thử thôi

v nên mình mới hỏi về các test case để xem code mình còn thiếu ở đâu, các case thông thường thì code trên chạy đúng r

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?