Điểm:
100 (p)
Thời gian:
1.0s
Bộ nhớ:
1023M
Input:
bàn phím
Output:
màn hình
Cho dãy số nguyên \(a\) gồm \(n\) phần tử được sắp xếp tăng dần. Hãy xác định giá trị lớn nhất của \(i\) sao cho \(a_i \le x\). Nếu không có vị trí thõa mãn in ra \(0\).
Input
- Dòng đâu tiên chứa số hai số nguyên dương \(n\) và \(k\) - độ dài của dãy, số câu hỏi. \((n, k \leq 100000)\)
- \(n\) số, các phần tử dãy \(a\) \((-10^9 \le a_i \le 10^9)\)
- \(k\) số nguyên dương \(x\) \((-10^9 \le x \le 10^9)\).
Output
- Gồm \(k\) dòng, mỗi dòng chứa câu trả lời cho mỗi câu hỏi.
Example
Test 1
Input
5 5
3 3 5 8 9
2 4 8 1 10
Output
0
2
4
0
5
Bình luận
Hint
Chúng ta sẽ nghĩ đến việc sử dụng tìm kiếm nhị phân.
Giải thích code :
Trước tiên, chúng ta sẽ giải thích về thuật toán:
x
cho trước, nếux
<= arr[mid] thì chúng ta sẽ xóa đoạn mid -> R. Hay đặt R lại bằng m - 1. Đặt r đằng trước m. Nên R = m - 1x
thì chúng ta sẽ xóa đoạn mid -> L. Hay đặt L lại bằng m + 1. Đặt l đằng sau m. Nên L = m + 1Giải thích code mẫu:
4 bình luận nữa