Đếm giá trị khác nhau bằng std::set
Khi thống kê một mảng số liệu, câu hỏi đầu tiên thường là: có bao nhiêu giá trị khác nhau,
Tiến độ của tôi ở bài này
Điểm và code bạn nộp đượ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: cpp-basics, arrays.
Nội dung đề bài
Mô tả bài toán
Khi thống kê một mảng số liệu, câu hỏi đầu tiên thường là: có bao nhiêu giá trị khác nhau, và đó là những giá trị nào? Nếu tự viết vòng lặp để lọc trùng thì rất dễ sai, còn std::set đã tự lo hai việc: loại bỏ phần tử trùng và giữ các phần tử theo thứ tự tăng dần.
Yêu cầu
Cho một mảng gồm n số nguyên. Hãy in ra số lượng giá trị khác nhau xuất hiện trong mảng, sau đó in chính các giá trị khác nhau đó theo thứ tự tăng dần.
Quy ước nộp bài
Nộp chương trình solution.cpp đọc dữ liệu từ stdin và in kết quả ra stdout. In đúng hai dòng như mô tả, không in thêm chữ nào khác.
Input
- Dòng thứ nhất: số nguyên n là số phần tử của mảng (1 <= n <= 30).
- Dòng thứ hai: n số nguyên cách nhau bởi dấu cách (|giá trị| <= 10000).
Output
- Dòng thứ nhất: một số nguyên là số lượng giá trị khác nhau.
- Dòng thứ hai: các giá trị khác nhau theo thứ tự tăng dần, cách nhau đúng một dấu cách.
Ràng buộc
- 1 <= n <= 30, |giá trị| <= 10000.
- Một giá trị có thể xuất hiện nhiều lần trong mảng.
- Thời gian cho mỗi bộ dữ liệu là 1 giây.
Ví dụ 1
Input
6
3 1 4 1 5 9
Output
5
1 3 4 5 9
Ví dụ 2
Input
5
7 7 7 7 7
Output
1
7
Giải thích
Với dữ liệu vào:
Mảng có các giá trị khác nhau là 1, 3, 4, 5, 9, nên kết quả là:
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.
