Phần tử xuất hiện nhiều nhất và lọc số dương
Hệ thống cảm biến phân tích hiệu năng của AI Empire thu thập một chuỗi gồm N số nguyên đo lường A1, A2, …, AN (1 ≤ N ≤ 105, -109 ≤ Ai ≤ 109).
Tiến độ của tôi ở bài này
Điểm được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: arrays, std vector, std sort.
Nội dung đề bài
Mục tiêu kiến thức
- Quản lý mảng dữ liệu số lượng lớn với
std::vectortrong C++. - Đếm tần suất xuất hiện của các phần tử bằng kỹ thuật sắp xếp O(N log N).
- Xử lý bài toán hòa điểm (tie-breaker): nếu nhiều phần tử có cùng tần suất lớn nhất, chọn phần tử có giá trị nhỏ nhất.
- Lọc các số dương duy nhất và bảo toàn thứ tự xuất hiện lần đầu trong mảng ban đầu.
Mô tả bài toán
Hệ thống cảm biến phân tích hiệu năng của AI Empire thu thập một chuỗi gồm N số nguyên đo lường A1, A2, …, AN (1 ≤ N ≤ 105, -109 ≤ Ai ≤ 109).
Bạn hãy viết chương trình thực hiện 2 yêu cầu:
- Tìm phần tử xuất hiện nhiều lần nhất: Xác định giá trị X có số lần xuất hiện K lớn nhất trong mảng. Nếu có nhiều giá trị có cùng số lần xuất hiện cao nhất, hãy chọn giá trị X nhỏ nhất.
- Lọc số dương ban đầu: In danh sách các số dương (Ai > 0) phân biệt (không trùng lặp), theo đúng thứ tự xuất hiện lần đầu tiên của chúng trong dãy ban đầu. Nếu mảng không có số dương nào, in
-1.
Quy ước nộp bài
- Chỉ cần viết một chương trình đọc
stdinvà in rastdout. Bài này không yêu cầu viết hàm. - Không dùng
coutđể in lời nhắc trước khi đọc dữ liệu. Lời nhắc sẽ lọt vàostdoutvà làm bài sai. - Chỉ in đúng nội dung ở mục Output. Không in thêm nhãn, dòng trống hay ký tự thừa.
- Output được so khớp từng ký tự, phân biệt chữ hoa/thường và dấu câu.
Input
- Dòng 1: Một số nguyên dương N (1 ≤ N ≤ 105).
- Dòng 2: Gồm N số nguyên A1, A2, …, AN cách nhau bởi dấu cách (-109 ≤ Ai ≤ 109).
Output
In ra 2 dòng:
- Dòng 1:
Gia tri: <X>, So lan: <K> - Dòng 2: Danh sách các số dương phân biệt cách nhau bởi một dấu cách (hoặc in
-1nếu không có số dương).
Ràng buộc
- 1 ≤ N ≤ 105.
- -109 ≤ Ai ≤ 109.
- Thời gian chạy: 1000ms.
- Bộ nhớ tối đa: 256MB.
Ví dụ 1
Input
8
5 -2 3 5 -2 7 3 -2Output
Gia tri: -2, So lan: 3
5 3 7Giải thích
- Giá trị
-2xuất hiện 3 lần (nhiều nhất). - Các số dương trong mảng ban đầu theo thứ tự là:
5, 3, 5, 7, 3. Khi lọc trùng lặp và giữ thứ tự xuất hiện đầu tiên:5 3 7.
Ví dụ 2
Input
5
4 2 4 2 -1Output
Gia tri: 2, So lan: 2
4 2Giải thích
Cả 2 và 4 đều xuất hiện 2 lần. Do yêu cầu chọn giá trị nhỏ hơn khi hòa số lần, ta chọn 2. Danh sách số dương phân biệt giữ nguyên thứ tự ban đầu: 4 2.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
