Lỗi runtime error

Đề: https://codeforces.com/edu/course/2/lesson/6/1/practice/contest/283911/problem/B
Em tóm tắt đề: Cho mảng a và k số để truy vấn, tìm vị trí số lớn nhất trong mảng a mà không lớn hơn số đang truy vấn.
Em làm bài này không hiểu vì sao cứ bị lỗi runtime error.
Đây là code của em. Mọi người sửa lỗi giúp em với ạ, em cảm ơn :sunny:

#include <iostream>
using namespace std;
#include <vector>
int main () {
  int n;
  cin >> n;
  int k;
  cin >> k;
  vector <int> arr (n);
  vector <int> b(k);
  for (int i = 0; i < n;i++) {
     cin >> arr[i];
  }
  arr[-1] = INT_MIN;
  arr[n]= INT_MAX;
  for (int j = 0; j < k;j++) {
       cin >> b[j];
       if (b[j] < arr[0]) cout << 0 << endl;
       else {
       int l = -1;
       int r = n;
           while (l +1  < r) {
              int mid = (l+r)/2;
              if (arr[mid] <= b[j]) l = mid;
              else r = mid;
        }
        if (arr[r] <= b[j]) cout << r+1;
       else cout << l +1 << endl;
  }
}
  return 0;
}

-1 là phần tử nào của vector vậy?
Đọc tài liệu về toán tử [] của vector:
https://www.cplusplus.com/reference/vector/vector/operator[]/

5 Likes

Dạ vâng em cảm ơn ạ :DDDD,

Rồi hiểu gì không, nếu hiểu thì viết lại câu trả lời ở đây cho người đến sau đọc.

4 Likes

Ý anh là sao ạ, câu trả lời anh ở trên trả lời rồi mà ạ.

Accept rồi a, cảm ơn a kkk

Nếu bạn hiểu cách giải quyết vấn đề thì trình bày ra, lỡ có ai đó cũng gặp tình trạng tương tự thì họ sẽ biết cách giải quyết, nhờ vào bạn.

5 Likes

Mình sai là do khai báo chỉ số của mảng là số âm nên dẫn đến runtime error

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