ধরুন আমাদের একটি অ্যারে দেওয়া হয়েছে 'arr' যাতে n সংখ্যার সাজানো পূর্ণসংখ্যার মান রয়েছে। আমাদেরকে q আকারের একটি অ্যারে 'ক্যোয়ারী'ও দেওয়া হয়েছে এবং আমাদের বলতে হবে যে 'ক্যোয়ারী'-এর মানগুলি প্রদত্ত অ্যারে 'অ্যার'-এ উপস্থিত আছে বা নেই। ক্যোয়ারীতে একটি মান যদি arr-এ উপস্থিত থাকে, তাহলে আমরা "বর্তমান" প্রিন্ট করি সেই অবস্থানের সাথে যেখানে মানটি অবস্থিত। অন্যথায়, আমরা "বর্তমান নেই" প্রিন্ট করি এবং arr-এ অবস্থান মুদ্রণ করি, যেখানে ন্যূনতম মান মানের থেকে বেশি কোয়েরি অবস্থিত। আমাদের মনে রাখতে হবে যে অ্যারেগুলি 1-সূচীযুক্ত৷
৷সুতরাং, যদি ইনপুটটি n =8, arr ={1, 2, 3, 4, 7, 9, 12, 15} , q =3, query ={1, 5, 8} এর মত হয়, তাহলে আউটপুট হবে
Present 1 Not present 5 Not present 6
প্রশ্নের প্রথম মানটি অবস্থান 1-এ উপস্থিত রয়েছে।
প্রশ্নের দ্বিতীয় মান arr-এ উপস্থিত নেই। যে অবস্থানে ন্যূনতম মানটি প্রশ্নে থাকা মানের থেকে বড় 5৷
৷একইভাবে, প্রশ্নের তৃতীয় মানটিও arr-এ উপস্থিত নেই। যে মানটি এর থেকে বড় সেটি হল arr-এর অবস্থান 6।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- একটি অ্যারের মান নির্ধারণ করুন
- আরম্ভ করার জন্য i :=0, যখন i
করুন - মানগুলির শেষে arr[i] ঢোকান
করুনidx :=(মানগুলির প্রথম উপাদানের অবস্থান যা কোয়েরির চেয়ে কম নয় [i]) - মানগুলির প্রথম উপাদান অবস্থান যদি মান [idx] query[i] এর মত হয়, তাহলে −
- মুদ্রণ("বর্তমান")
অন্যথায়,
- মুদ্রণ("বর্তমান নেই")
প্রিন্ট(idx + 1)
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
#include <vector> #include <iostream> using namespace std; void solve(int n, int arr[], int q, int query[]) { vector<int> values; for(int i = 0; i < n; i++){ values.push_back(arr[i]); } for(int i = 0; i < q; i++) { int idx = lower_bound (values.begin(), values.end(), query[i]) - values.begin(); if (values[idx] == query[i]) cout << "Present "; else cout << "Not present "; cout << idx + 1 << endl; } } int main() { int input_arr[] = {1, 2, 3, 4, 7, 9, 12, 15}; int query_arr[] = {1, 5, 8}; solve(8, input_arr, 3, query_arr); return 0; }
ইনপুট(stdin)
int input_arr[] = {1, 2, 3, 4, 7, 9, 12, 15}; int query_arr[] = {1, 5, 8}; solve(8, input_arr, 3, query_arr);
আউটপুট
Present 1 Not present 5 Not present 6