मान लीजिए कि हमें एक सरणी 'गिरफ्तारी' दी गई है जिसमें क्रमबद्ध पूर्णांक मानों की संख्या है। हमें आकार q की एक सरणी 'क्वेरी' भी दी गई है, और हमें यह बताना होगा कि 'क्वेरी' में मान दिए गए सरणी 'arr' में मौजूद हैं या नहीं। यदि क्वेरी में कोई मान गिरफ्तारी में मौजूद है, तो हम उस स्थिति के साथ "वर्तमान" प्रिंट करते हैं जहां मान स्थित है। अन्यथा, हम "मौजूद नहीं" प्रिंट करते हैं और गिरफ्तारी में स्थिति प्रिंट करते हैं, जहां न्यूनतम मान मान से अधिक होता है क्वेरी स्थित है। हमें याद रखना होगा कि सरणियाँ 1-अनुक्रमित हैं।
इसलिए, यदि इनपुट n =8, arr ={1, 2, 3, 4, 7, 9, 12, 15}, q =3, क्वेरी ={1, 5, 8} जैसा है, तो आउटपुट होगा
Present 1 Not present 5 Not present 6
प्रश्नों का पहला मान गिरफ्तारी में स्थिति 1 में मौजूद है।
प्रश्नों का दूसरा मान गिरफ्तारी में मौजूद नहीं है। वह स्थिति जहां क्वेरी में मान से कम से कम मान 5 है.
इसी तरह, क्वेश्चन का तीसरा मान भी एरर में मौजूद नहीं है। जो मान इससे बड़ा है वह गिरफ्तारी की स्थिति 6 में है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- सरणी मान परिभाषित करें
- इनिशियलाइज़ i :=0 के लिए, जब i
करें - मानों के अंत में arr[i] डालें
करेंidx :=(मानों में पहले तत्व की स्थिति जो क्वेरी से कम नहीं है[i]) - मानों में प्रथम तत्व की स्थिति यदि मान [idx] क्वेरी [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