মান লিজিয়ে queries নামক একটি অ্যারে আছে যার এলিমেন্টগুলো ১ থেকে m পর্যন্ত পূর্ণসংখ্যা। আমাদের সব কুয়েরি প্রসেস করতে হবে rules অনুযায়ী:
- শुरুর সময় পারমিউটেশন P=[1,2,3,...,m]
- প্রতি i-তে, queries[i]-র পজিশন P-এ খুঁজে বের করুন (ইন্ডেক্স ০ থেকে) এবং সেটিকে P-এর শুরুতে নিয়ে আসুন।
দেওয়া কুয়েরিগুলোর ফলাফল ধারণকারী একটি অ্যারে রিটার্ন করতে হবে।
যেমন queries = [3,1,2,1], m = 5 হলে আউটপুট [2,1,2,1], কারণ:
- i=0: queries[0]=3, P=[1,2,3,4,5], 3-এর পজিশন ২, P=[3,1,2,4,5]
- i=1: queries[1]=1, P=[3,1,2,4,5], 1-এর পজিশন ১, P=[1,3,2,4,5]
- i=2: queries[2]=2, P=[1,3,2,4,5], 2-এর পজিশন ২, P=[2,1,3,4,5]
- i=3: queries[3]=1, P=[2,1,3,4,5], 1-এর পজিশন ১, P=[1,2,3,4,5]
- শেষে ফলাফল অ্যারে [2,1,2,1]
সমাধানের ধাপগুলো:
- ret অ্যারে এবং v অ্যারে সংজ্ঞায়িত করুন
- i=0 থেকে m-1 পর্যন্ত v-এ i+1 পুশ করুন
- প্রতিটি x ইন q-এ:
- pos := -1, temp অ্যারে সংজ্ঞায়িত করুন
- i=0 থেকে v.size()-1 পর্যন্ত যদি v[i]==x, pos=i, ব্রেক
- temp-র শুরুতে v[pos] ইনসার্ট করুন
- i=0 থেকে v.size()-1 পর্যন্ত যদি i!=pos, temp-এ v[i] পুশ করুন
- v := temp, ret-এ pos পুশ করুন
- ret রিটার্ন করুন
উদাহরণ
নিচের ইমপ্লিমেন্টেশন দেখুন:
#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<int> v){
cout << "[";
for(int i = 0; i ইনপুট
{3,1,2,1}, 5 আউটপুট
[2, 1, 2, 1, ]