Tìm kiếm nhị phân 2 (lớp 7)
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 trong đoạn (tìm kiếm tuyến tính)
Nộp bàiPoint: 1
Cho dãy số A gồm N phần tử và Q truy vấn. Mỗi truy vấn gồm 3 số L, R, X. Hãy kiểm tra xem số X có xuất hiện trong đoạn từ chỉ số L đến chỉ số R của mảng hay không.
Dữ liệu vào:
Dòng 1: Hai số N và Q.
Dòng 2: N số nguyên A1, A2, ..., AN.
Q dòng tiếp theo: Mỗi dòng gồm 3 số L, R, X.
Dữ liệu ra: Với mỗi truy vấn, in ra "YES" nếu tìm thấy, "NO" nếu không.
Ràng buộc: 1 <= N, Q <= 1000; 1 <= L <= R <= N; |Ai|, |X| <= 10^9. (Lưu ý: N nhỏ để chấp nhận độ phức tạp O(N*Q)).
Ví dụ 1:
Input:
5 2
1 2 3 4 5
1 3 2
3 5 1
Output:
YES
NO
Ví dụ 2:
Input:
4 1
10 20 30 40
2 3 40
Output:
NO
Số X gần nhất
Nộp bàiPoint: 1
Cho dãy số thực A gồm N phần tử và một số thực X. Hãy tìm phần tử trong mảng có giá trị gần với X nhất (trị tuyệt đối của hiệu số là nhỏ nhất). Nếu có nhiều số, in ra số xuất hiện đầu tiên.
Dữ liệu vào:
Dòng 1: Số nguyên N và số thực X.
Dòng 2: N số thực A1, A2, ..., AN.
Dữ liệu ra: Giá trị của phần tử gần X nhất.
Ràng buộc: 1 <= N <= 10^6; -10^9 <= Ai, X <= 10^9.
Ví dụ 1:
Input:
5 3.5
1.0 2.0 5.0 4.0 3.0
Output:
4.0
Ví dụ 2:
Input:
4 10.0
1.0 20.0 15.0 5.0
Output:
15.0
Đếm số bội của K
Nộp bàiPoint: 1
Cho dãy số A gồm N phần tử và số nguyên dương K. Hãy đếm xem trong dãy có bao nhiêu số chia hết cho K.
Dữ liệu vào:
Dòng 1: Hai số nguyên N và K.
Dòng 2: N số nguyên A1, A2, ..., AN.
Dữ liệu ra: Số lượng phần tử chia hết cho K.
Ràng buộc: 1 <= N <= 10^6; 1 <= K <= 10^9; |Ai| <= 10^9.
Ví dụ 1:
Input:
5 2
1 2 3 4 5
Output:
2
Ví dụ 2:
Input:
4 3
1 2 4 5
Output:
0
Điểm bất động
Nộp bàiPoint: 1
Cho dãy số A gồm N phần tử được đánh số từ 0 đến N-1. Hãy tìm chỉ số i đầu tiên sao cho A[i] == i. Nếu không có, in -1.
Dữ liệu vào:
Dòng 1: Số nguyên dương N.
Dòng 2: N số nguyên A0, A1, ..., AN-1.
Dữ liệu ra: Chỉ số i tìm được hoặc -1.
Ràng buộc: 1 <= N <= 10^6; |Ai| <= 10^9.
Mảng không nhất thiết phải sắp xếp.
Ví dụ 1:
Input:
5
-1 0 2 5 10
Output:
2
Ví dụ 2:
Input:
3
1 2 3
Output:
-1
Ký tự xuất hiện đầu tiên
Nộp bàiPoint: 1
Cho một chuỗi ký tự S và một ký tự C. Hãy tìm vị trí đầu tiên (tính từ 0) của C trong S.
Dữ liệu vào:
Dòng 1: Chuỗi S (không chứa dấu cách).
Dòng 2: Ký tự C.
Dữ liệu ra: Chỉ số đầu tiên của C hoặc -1.
Ràng buộc: Độ dài S <= 10^6.
Ví dụ 1:
Input:
programming
r
Output:
1
Ví dụ 2:
Input:
hello
z
Output:
-1
Cực đại địa phương
Nộp bàiPoint: 1
Cho dãy số A gồm N phần tử. Một phần tử được gọi là cực đại địa phương nếu nó lớn hơn cả phần tử đứng liền trước và liền sau nó (nếu có). Hãy đếm số lượng cực đại địa phương trong dãy.
Dữ liệu vào:
Dòng 1: Số nguyên dương N.
Dòng 2: N số nguyên A1, A2, ..., AN.
Dữ liệu ra: Số lượng cực đại địa phương.
Ràng buộc: 1 <= N <= 10^6; |Ai| <= 10^9.
Ví dụ 1:
Input:
5
1 5 2 4 3
Output:
2
Ví dụ 2:
Input:
3
1 1 1
Output:
0
Khoảng cách xa nhất
Nộp bàiPoint: 1
Cho dãy số A gồm N phần tử và một số nguyên X. Hãy tìm khoảng cách lớn nhất giữa chỉ số đầu tiên và chỉ số cuối cùng mà X xuất hiện. Nếu X xuất hiện ít hơn 2 lần hoặc không xuất hiện, in ra 0.
Dữ liệu vào:
Dòng 1: Số nguyên N và X.
Dòng 2: N số nguyên A1, A2, ..., AN.
Dữ liệu ra:
Khoảng cách lớn nhất (LastIndex - FirstIndex).
Ràng buộc: 1 <= N <= 10^6; |Ai|, |X| <= 10^9.
Ví dụ 1:
Input:
6 5
5 1 2 5 3 5
Output:
5
Ví dụ 2:
Input:
4 10
1 2 3 4
Output:
0
Cặp số có tổng nhỏ hơn K
Nộp bàiPoint: 1
Cho hai mảng A (kích thước N) và B (kích thước M). Hãy đếm số cặp (i, j) sao cho A[i] + B[j] <= K. (Gợi ý: Sort B, duyệt A và chặt nhị phân trên B).
Dữ liệu vào:
Dòng 1: Ba số nguyên N, M, K (1 <= N, M <= 10^5, |K| <= 10^9).
Dòng 2: N số nguyên A[i].
Dòng 3: M số nguyên B[j].
Dữ liệu ra:
Số lượng cặp thỏa mãn.
Ví dụ:
Input:
3 3 10
1 5 8
2 4 9
Output:
5