ধরা যাক একটি map ডেটা স্ট্রাকচার আছে যাতে স্টুডেন্টের রোল (int) এবং নাম (string) সংরক্ষণ করা হবে। স্ট্যান্ডার্ড ইনপুটে n কোয়েরি দেওয়া থাকবে। প্রতিটি কোয়েরিতে ২ বা ৩টি এলিমেন্ট থাকবে। টাইপ ১ হলে তিনটি এলিমেন্ট (অপারেটর, রোল, নাম), টাইপ ২ বা ৩ হলে দুটি এলিমেন্ট (অপারেটর, রোল)। অপারেশনগুলো:
- Insert (১): রোল কী হিসেবে নাম মানচিত্রে डालুন
- Delete (২): রোল অনুযায়ী এন্ট্রি মুছুন (খালি স্ট্রিং দিয়ে)
- Search (৩): রোল দিয়ে খুঁজুন, পাওয়া গেলে নাম প্রিন্ট করুন, না পেলে "Not found"
উদাহরণস্বরূপ, n=8, queries=[[1,5,"Atanu"],[1,8,"Tapan"],[1,3,"Manish"],[2,8],[1,9,"Piyali"],[3,8],[3,3],[3,5]] হলে আউটপুট: [Not found, Manish, Atanu]
সমাধানের ধাপসমূহ
- n := কোয়েরি সংখ্যা
- map
m সংজ্ঞায়িত করুন - while(n--) লুপ:
- t, roll ইনপুট নিন
- যদি t==1: name ইনপুট নিন, m[roll]=name
- যদি t==2: m[roll]=""
- অন্যথায় (t==3): m[roll] খালি নয়লে প্রিন্ট করুন, অন্যথায় "Not found"
উদাহরণ
নিচের ইমপ্লিমেন্টেশনটি দেখুন:
#include <iostream> #include <map> using namespace std; int main(){ int n; cin >> n; map<int, string> m; while (n--) { int t; cin >> t; int roll; cin >> roll; if (t == 1) { string name; cin >> name; m[roll] = name; } else if (t == 2) { m[roll] = ""; } else { if(m[roll] != "") cout << m[roll] << endl; else cout << "Not found" << endl; } } } ইনপুট
8 1 5 Atanu 1 8 Tapan 1 3 Manish 2 8 1 9 Piyali 3 8 3 3 3 5
আউটপুট
Not found Manish Atanu