मान लीजिए हमारे पास तीन संख्याएं k, l और m हैं, और n तत्वों वाली एक और सरणी A है। एक डाकू बैंक को लूटने में विफल रहा लेकिन बैंक के सभी सेफ खोलने में कामयाब रहा। बैंक क्लाइंट इस विफल डकैती का लाभ उठाने और सेफ से कुछ पैसे चुराने का फैसला करता है। एक लाइन में कई सेफ हैं। कुल मिलाकर सभी सेफ में n बैंकनोट्स बचे हैं। i-वां बैंकनोट सेफ A[i] में है। बैंक कर्मचारी अब सेफ k पर है। दो सुरक्षा गार्ड हैं, उनमें से एक सेफ l की रखवाली करता है जैसे कि l < k, इसलिए पहला गार्ड सामान के बाईं ओर है। दूसरा गार्ड सेफ m की रखवाली करता है जैसे कि m > k, (वह सामान के दाईं ओर है)। दोनों गार्ड हिलते नहीं हैं। हर सेकंड में, सामान या तो वर्तमान सेफ से सभी बैंकनोट्स ले सकता है या किसी भी आसन्न सेफ पर जा सकता है। हालांकि, वह किसी भी समय सुरक्षा गार्ड द्वारा संरक्षित किसी भी सेफ पर नहीं जा सकता, क्योंकि उस पर चोरी का आरोप लगाया जा सकता है। हमें अधिकतम मात्रा में बैंकनोट्स ज्ञात करने हैं जो सामान इकट्ठा कर सकता है।
इसलिए, यदि इनपुट k = 5; l = 3; m = 7; A = [4, 7, 5, 5, 3, 6, 2, 8] है, तो आउटपुट 4 होगा, क्योंकि:
चरण
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
c1 := 0 n := size of A c1 := 0 for initialize i := 0, when i < n, update (increase i by 1), do: x := A[i] if x > l and x < m, then: (increase c1 by 1) return c1
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
#include <bits/stdc++.h> using namespace std; int solve(int k, int l, int m, vector<int> A){ int c1 = 0, x; int n = A.size(); c1 = 0; for (int i = 0; i < n; i++){ x = A[i]; if (x > l && x < m) c1++; } return c1; } int main(){ int k = 5; int l = 3; int m = 7; vector<int> A = { 4, 7, 5, 5, 3, 6, 2, 8 }; cout << solve(k, l, m, A) << endl; }इनपुट
5, 3, 7, { 4, 7, 5, 5, 3, 6, 2, 8 }आउटपुट
4