cpp-321Đọc toàn bộ đề miễn phí

Đế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,

C++Cơ bản12 phút

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ủ đề

data-structuressetdistinctentry-ramp

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à:

3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.

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.

Nhóm Zalo