ধরা যাক একটি সেট ডেটা স্ট্রাকচার আছে যাতে ইন্টিজার টাইপ ডেটা থাকে। n কোয়েরি দেওয়া থাকবে। প্রতিটি কোয়েরিতে দুটি এলিমেন্ট: অপারেটর এবং এলিমেন্ট। অপারেশন:
- Insert (১): এলিমেন্ট সেটে যোগ করুন
- Delete (২): এলিমেন্ট সেট থেকে মুছুন (যদি থাকে)
- Search (৩): এলিমেন্ট খুঁজুন, পাওয়া গেলে "Yes", না পেলে "No"
উদাহরণস্বরূপ, n=7, queries=[[1,5],[1,8],[1,3],[2,8],[1,9],[3,8],[3,3]] হলে আউটপুট: [No, Yes]
সমাধানের ধাপসমূহ
- set
s এবং iterator it সংজ্ঞায়িত করুন - q := কোয়েরি সংখ্যা
- while(q--):
- 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()) "No" else "Yes"
উদাহরণ
নিচের ইমপ্লিমেন্টেশনটি দেখুন:
#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; } ইনপুট
7 1 5 1 8 1 3 2 8 1 9 3 8 3 3
আউটপুট
No Yes