Tìm kiếm nhị phân
Hàm tìm kiếm nhị phân
Nộp bàiPoint: 1
Cho một mảng A các số nguyên có N phần tử, sử dụng hàm tìm kiếm nhị phân có sẵn để tìm kiếm giá trị X nhập từ bàn phím
Dòng đầu tiên nhập N và X
Dòng tiếp theo nhập N giá trị của mảng A
In ra FOUND nếu tìm thấy và NOT FOUND nếu không tìm thấy
Ràng buộc: ~0 < N \leq 10^6~; ~0 \leq A[i] \leq 10^9~
Input:
5 6
3 5 6 9 13
Output:
FOUND
Tìm Kiếm Trong Mảng Sắp Xếp (tìm kiếm nhị phân)
Nộp bàiPoint: 1
Cho một dãy số nguyên A gồm N phần tử đã được sắp xếp theo thứ tự tăng dần. Có Q truy vấn, mỗi truy vấn gồm một số nguyên X. Hãy kiểm tra xem X có xuất hiện trong dãy A hay không.
Dữ liệu vào:
Dòng 1: Hai số nguyên N và Q.
Dòng 2: N số nguyên là các phần tử của dãy A.
Q dòng tiếp theo: Mỗi dòng chứa một số nguyên X cần tìm.
Dữ liệu ra:
Với mỗi truy vấn, in ra "YES" nếu X xuất hiện trong A, ngược lại in ra "NO".
Ràng buộc:
1 <= N, Q <= 10^5
A[i]|, |X| <= 10^9
Ví dụ:
Input:
5 3
1 3 5 7 9
3
4
9
Output:
YES
NO
YES
Tìm Vị Trí Đầu Tiên
Nộp bàiPoint: 1
Cho dãy số A gồm N phần tử đã sắp xếp tăng dần (có thể có phần tử trùng nhau). Hãy tìm vị trí xuất hiện đầu tiên của số X trong dãy. Nếu không tìm thấy, in ra -1. (Các vị trí được đánh số từ 1 đến N).
Dữ liệu vào:
Dòng 1: N và X.
Dòng 2: N số nguyên của dãy A.
Dữ liệu ra:
Chỉ số đầu tiên của X hoặc -1.
Ràng buộc:
1 <= N <= 10^5
|A[i]|, |X| <= 10^9
Ví dụ:
Input:
6 3
1 2 3 3 3 5
Output:
3
Tìm Vị Trí Cuối Cùng
Nộp bàiPoint: 1
Tương tự bài trước, cho dãy A tăng dần. Hãy tìm vị trí xuất hiện cuối cùng của số X. Nếu không có in ra -1.
Dữ liệu vào:
Dòng 1: N và X.
Dòng 2: N số nguyên của dãy A.
Dữ liệu ra:
Chỉ số cuối cùng của X hoặc -1.
Ràng buộc:
1 <= N <= 10^5
|A[i]|, |X| <= 10^9
Ví dụ:
Input:
6 3
1 2 3 3 3 5
Output:
5
Tần Suất Của X
Nộp bàiPoint: 1
Cho dãy A đã sắp xếp tăng dần. Hãy đếm xem số X xuất hiện bao nhiêu lần trong dãy.
Dữ liệu vào:
Dòng 1: N và X.
Dòng 2: N số nguyên dãy A.
Dữ liệu ra:
Số lần xuất hiện của X.
Ràng buộc:
1 <= N <= 10^5
|A[i]|, |X| <= 10^9
Ví dụ:
Input:
7 2
1 1 2 2 2 3 4
Output:
3
Lower Bound
Nộp bàiPoint: 1
Cho dãy A đã sắp xếp tăng dần. Với mỗi truy vấn X, hãy tìm số nhỏ nhất trong dãy A mà có giá trị lớn hơn hoặc bằng X. Nếu không có số nào thỏa mãn, in ra "Khong".
Dữ liệu vào:
Dòng 1: N và Q.
Dòng 2: Dãy A.
Q dòng tiếp theo: Mỗi dòng là một số X.
Dữ liệu ra:
Giá trị tìm được hoặc "Khong".
Ràng buộc:
1 <= N, Q <= 10^5
Ví dụ:
Input:
5 2
1 4 5 8 9
6
10
Output:
8
Khong
Upper Bound
Nộp bàiPoint: 1
Cho dãy A đã sắp xếp tăng dần. Với mỗi truy vấn X, tìm số nhỏ nhất trong dãy A mà lớn hơn hẳn X (lớn hơn chặt).
Dữ liệu vào:
Dòng 1: N và Q.
Dòng 2: Dãy A.
Q dòng tiếp theo: Mỗi dòng là số X.
Dữ liệu ra:
Giá trị tìm được hoặc "Khong".
Ràng buộc:
1 <= N, Q <= 10^5
Ví dụ:
Input:
5 2
1 4 5 5 9
5
9
Output:
9
Khong
Tìm kiếm phần tử xuất hiện đầu tiên
Nộp bàiPoint: 1
Cho một mảng A nguyên gồm N phần tử đã sắp xếp tăng dần, hãy tìm chỉ số của phần tử xuất hiện đầu tiên trong mảng, ví dụ mảng 1, 3, 4, 5, 5, 5, 6, 7. Nếu tìm số 5 thì số 5 xuất hiện đầu tiên sẽ có chỉ số 3, chỉ số này được in ra. Nếu không tìm thấy thì in ra -1
Ràng buộc: ~0 < N \leq 10^6~, ~-10^6 < A[i] \leq 10^6~
Input 01:
8 5
1 3 4 5 5 5 6 7
Output 01:
3
Input 02:
7 -3
-3 -3 -1 4 5 6 7
Output 02:
0
Input 03:
6 10
1 3 4 5 6 7
Output 03:
-1
Đếm số lần xuất hiện của x trong mảng sử dụng tìm kiếm nhị phân
Nộp bàiPoint: 1
Nhập vào một mảng các số nguyên A có N phần tử và một số nguyên X, đếm xem X xuất hiện bao nhiêu lần trong mảng.
Ràng buộc: ~0 < N \leq 10^6~; ~-10^6 \leq A[i], X \leq 10^6~
Dữ liệu vào gồm 2 dòng, dòng thứ nhất là số lượng N phần tử và X, dòng thứ 2 lần lượt là N phần tử trong mảng A.
Input 01:
5 3
5 1 4 6 3
Output 01:
1
Số 3 xuất hiện 1 lần trong mảng
Input 02:
6 2
1 3 1 4 1 7
Output 02:
0
Số nhỏ nhất lớn hơn Ai
Nộp bàiPoint: 1
Cho mảng A gồm n phần tử. Nhiệm vụ của bạn là tìm giá trị nhỏ nhất (phải thuộc mảng A) lớn hơn Ai (i = 0, 1, 2,, n-1). Đưa ra ký tự _ nếu Ai không có phần từ lớn hơn nó. Ví dụ với mảng A = (13, 6, 7, 12) ta có kết quả là (_ , 7, 12, 13).
Định dạng đầu vào: Dòng đầu tiên đưa vào n là số phần tử của mảng A; Dòng kế tiếp đưa vào n số A[i] của mảng; các số được viết cách nhau một vài khoảng trống.
Ràng buộc: 1 <= N <= 10^5; 1 ≤ A[i] <= 10^5.
Định dạng đầu ra: Đưa ra kết quả trên 1 dòng
Input:
9
6 3 9 8 10 2 1 15 7
Output:
7 6 10 9 15 3 2 _ 8