Giả sử chúng ta có set chứa số nguyên. Nhập n truy vấn, mỗi truy vấn 2 phần tử: loại và giá trị. Loại 1: chèn. Loại 2: xóa. Loại 3: tìm - in "Yes" nếu có, "No" nếu không.
Ví dụ: n=7, queries=[[1,5],[1,8],[1,3],[2,8],[1,9],[3,8],[3,3]] → [No, Yes]
Giải thuật
- set
s, iterator it - Đọc q
- While q--: đọc qt, x
- qt==1: s.insert(x)
- qt==2: s.erase(x)
- qt==3: it=s.find(x); nếu it==s.end() in "No", ngược lại "Yes"
Ví dụ minh họa
#include <iostream>
#include <set>
using namespace std;
int main(){
set<int> s;
set<int>::iterator it;
int q,x;
int qt;
cin >> q;
while(q--){
cin>>qt>>x;
switch(qt){
case 1:s.insert(x); break;
case 2:s.erase(x); break;
case 3:it=s.find(x);
if(it==s.end()) cout<<"No"<<endl;
else cout<<"Yes"<<endl;
break;
}
}
return 0;
}
Đầu vào
7 1 5 1 8 1 3 2 8 1 9 3 8 3 3
Đầu ra
No Yes