Как решить задачу на бин поиск?
Не понимаю почему, 2 день не могу решить задачу. Ломается на одном тесте(WA).
Меньше либо равно В этой задаче вам нужно будет несколько раз находить в отсортированном массиве первое число, которое меньше либо равно числу из запроса. Обратите внимание - в этой задаче массив нумеруется с единицы. Входные данные В первой строке записаны два целых числа n, m (1≤n,m≤2 * 10^5) - размер массива и количество запросов. Во второй строке записаны n целых чисел в невозрастающем порядке, каждое по модулю не превышает 1 * 10^9. Эти числа образуют данный массив. В следующих mm строках даны числа запросов, по одному в строке. Выходные данные Для каждого запроса выведите индекс самого левого числа в массиве, которое меньше либо равно данному. Если такого числа нет, вместо него выведите NO SOLUTION
Sample Input:
10 10
16 15 13 5 3 -1 -4 -6 -15 -18
-1 7 -6 0 5 18 15 3 -18 -19
Sample Output:
6 4 8 6 4 1 2 5 10 NO SOLUTION
Мой код -
#include <iostream>
using namespace std;
long binary(long array[], long x, long n){
if (x > array[0]) return 1;
long l = -1;
long r = n;
while (l < r){
long mid = l + (r - l) / 2;
if (x < array[mid]){
l = mid + 1;
}
else{
r = mid;
}
}
return l + 1;
}
int main()
{
long n, m, x;
cin >> n >> m;
long array[n];
for (long i = 0; i < n; i++) cin >> array[i];
for (long j = 0; j < m; j++){
cin >> x;
if (x < array[n - 1])
cout << "NO SOLUTION" << endl;
else
cout << binary(array, x, n) << endl;
}
return 0;
}