मान लीजिए कि हमारे पास पूर्णांक प्रकार के डेटा के लिए एक सेट डेटा संरचना है। हमारे मानक इनपुट में हम n प्रश्न प्रदान करते हैं। प्रत्येक क्वेरी में (प्रत्येक पंक्ति में) हमारे पास दो तत्व होते हैं। पहला ऑपरेटर है, दूसरा तत्व है। संचालन नीचे की तरह हैं -
-
डालना। यह तत्व को सेट में सम्मिलित करेगा
-
मिटाना। यह तत्व को सेट से हटा देगा (यदि मौजूद है)
-
खोज। यह तत्व को सेट में खोजेगा, यदि मौजूद है तो हाँ, अन्यथा नहीं।
इसलिए, यदि इनपुट n =7 जैसा है, तो क्वेरीज़ =[[1,5], [1,8], [1,3], [2,8], [1,9], [3,8], [3,3]], तो आउटपुट [नहीं, हाँ] होगा क्योंकि 8 सेट में मौजूद नहीं है और 3 मौजूद है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- एक सेट को परिभाषित करें
- एस के माध्यम से पुनरावृति करने के लिए एक सेट पुनरावर्तक 'इसे' परिभाषित करें
- q :=प्रश्नों की संख्या
- जबकि q गैर-शून्य है, प्रत्येक पुनरावृत्ति के बाद q घटाएं, करें:
- क्वेरी टाइप qt लें
- क्यूटी के लिए
- यदि qt 1 है, तो x s डालें
- ब्लॉक से बाहर आएं
- यदि qt 2 है, तो s से x हटा दें
- ब्लॉक से बाहर आएं
- अगर क्यूटी 3 है,
- इसके अंदर कॉल ढूंढें(x)
- यदि यह s के अंतिम तत्व के समान है, तो:
- प्रिंट नहीं
- अन्यथा
- हां प्रिंट करें
- ब्लॉक से बाहर आएं
- यदि qt 1 है, तो x s डालें
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#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