[Buổi 15][STL][HW] Bài 2: Danh sách giá trị phân biệt
Danh sách giá trị phân biệt
Bối cảnh
Một hệ thống ghi nhận nhiều mã sự kiện, nhưng báo cáo tổng hợp chỉ cần biết những mã khác nhau đã từng xuất hiện và muốn liệt kê chúng theo thứ tự tăng dần. Dữ liệu gốc có thể chứa cùng một mã rất nhiều lần; nếu dùng vector thuần túy, học viên phải tự kiểm tra trùng lặp và tự tổ chức thứ tự. set phù hợp trực tiếp với requirement này vì mỗi key chỉ tồn tại một lần và khi duyệt, các key xuất hiện theo thứ tự tăng dần.
Bài Homework Easy nhằm củng cố nguyên tắc "chọn container theo semantics" của B15: không phải lúc nào cũng cần tự viết vòng lặp loại trùng hoặc sort. Khi requirement là unique + ordered keys, set đã mô tả đúng dữ liệu cần lưu. Học viên vẫn phải chú ý rằng set không giữ thứ tự nhập và không giữ duplicate.
Yêu cầu
- Insert toàn bộ giá trị vào set.
- In số lượng distinct.
- In các giá trị tăng dần.
Input
Dòng 1 n; dòng 2 n số.
Output
Dòng 1 số distinct; dòng 2 các giá trị tăng dần.
Ràng buộc
1≤n≤5000.
Ví dụ 1
Input
5
5 1 5 2 1
Output
3
1 2 5
Giải thích
Dữ liệu 5 1 5 2 1 chứa ba giá trị phân biệt: 1, 2 và 5. Khi insert vào set, lần lặp lại của 5 và 1 không tạo phần tử mới. Set được duyệt theo key tăng dần nên dòng thứ hai là 1 2 5, còn size() bằng 3 nên dòng đầu là 3.
Ví dụ 2
Input
1
7
Output
1
7
Giải thích
Input chỉ có một giá trị 7. Set sau khi insert chứa đúng key 7, vì vậy số distinct là 1 và danh sách tăng dần chỉ gồm 7. Output là 1 rồi 7.
Thông tin học tập
- Module: M05
- Buổi: B15
- Loại bài: HOMEWORK
- Độ khó: Easy
- Concepts: set, distinct, ordered keys
- Giới hạn kiến thức: B01-B15
- Time limit: 1 second(s)
- Memory limit: 256 MB
- Point: 100
Comments