Đếm số lần xuất hiện của x trong mảng sử dụng tìm kiếm nhị phân
Xem dạng PDFCho một mảng A gồm N số nguyên chưa được sắp xếp. Có Q truy vấn được đưa ra, mỗi truy vấn yêu cầu bạn kiểm tra một số nguyên X và đếm xem X xuất hiện bao nhiêu lần trong mảng A.
Gợi ý: Vì số lượng truy vấn Q rất lớn, việc dùng vòng lặp quét toàn bộ mảng cho mỗi câu hỏi sẽ bị quá thời gian. Các em cần sắp xếp mảng trước, sau đó vận dụng Tìm kiếm nhị phân (hoặc các hàm lowerbound, upperbound trong C++) để tối ưu hóa thời gian tìm kiếm.
Đầu vào:
• Dòng thứ nhất chứa hai số nguyên dương N và Q lần lượt là số lượng phần tử của mảng và số lượng truy vấn.
• Dòng thứ hai chứa N số nguyên A[i] cách nhau bởi khoảng trắng.
• Q dòng tiếp theo, mỗi dòng chứa một số nguyên X tương ứng với một truy vấn.
Ràng buộc:
• 1 <= N, Q <= 10^5
• -10^9 <= A[i], X <= 10^9
Đầu ra:
In ra Q dòng, mỗi dòng là số lần xuất hiện của X tương ứng với từng truy vấn.
Ví dụ:
Input 01:
5 3
5 1 4 6 3
3
6
10
Output 01:
1
1
0
Input 02:
6 4
1 3 1 4 1 7
1
2
4
7
Output 02:
3
0
1
1
Bình luận