[Buổi 18][Củng cố STL][HW] Bài 2: Distinct Membership
Distinct Membership
Bối cảnh
Một hệ thống tổng hợp chỉ cần biết tập mã khác nhau đã xuất hiện và trả lời nhanh câu hỏi một mã x có thuộc tập đó hay không. Mặc dù B18 đã học nhiều công cụ mạnh hơn như sort, binary search, comparator và prefix sum, bài toán này cố ý có requirement đơn giản để kiểm tra khả năng không over-engineer. set đã đủ để vừa loại duplicate vừa hỗ trợ membership; thêm vector sort hay prefix chỉ làm code dài hơn mà không cải thiện contract.
Homework Easy này nhắc lại một nguyên tắc quan trọng của phần tích hợp: pipeline tốt bắt đầu từ requirement. Chỉ dùng công cụ cần thiết, và không vì "đã học thuật toán mới" mà bắt buộc phải đưa nó vào mọi lời giải.
Yêu cầu
- Insert n giá trị vào set.
- In số distinct.
- Mỗi query x in YES/NO.
Input
Dòng 1 n; dòng 2 n số; dòng 3 q; q dòng x.
Output
Dòng 1 distinct count; sau đó q dòng YES/NO.
Ràng buộc
1≤n,q≤5000.
Ví dụ 1
Input
5
5 1 5 2 1
4
1
5
3
2
Output
3
YES
YES
NO
YES
Giải thích
Từ dãy 5 1 5 2 1, set giữ ba key 1,2,5, nên dòng đầu là 3. Query 1, 5 và 2 đều có trong set nên trả YES; query 3 không tồn tại nên trả NO. Thứ tự query không ảnh hưởng đến nội dung set.
Ví dụ 2
Input
1
7
2
7
8
Output
1
YES
NO
Giải thích
Dữ liệu chỉ có 7 nên số distinct bằng 1. Query 7 trả YES, còn 8 chưa từng xuất hiện nên count(8)=0 và trả NO. Output vì thế gồm 1, YES, NO.
Thông tin học tập
- Module: M05
- Buổi: B18
- Loại bài: HOMEWORK
- Độ khó: Easy
- Concepts: set, distinct, membership, minimal tool selection
- Giới hạn kiến thức: B01-B18
- Time limit: 1 second(s)
- Memory limit: 256 MB
- Point: 100
Comments