[Buổi 18][Củng cố STL][HW] Bài 2: Distinct Membership


LÀM BÀI

Points: 100
Time limit: 1.0s
Memory limit: 256M

Author:
Problem types
Allowed languages
C++

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

  1. Insert n giá trị vào set.
  2. In số distinct.
  3. 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

There are no comments at the moment.

Zalo