मान लीजिए हमारे पास जोड़े की एक सरणी P है। जहां P[i] (l, r) के रूप में है, और एक अन्य संख्या k है। मान लीजिए हम n अध्यायों वाली एक किताब पढ़ने जा रहे हैं। ताकि किताब का एक पेज ठीक एक अध्याय से संबंधित हो और प्रत्येक अध्याय में कम से कम एक पेज हो। हमने कुछ पेज पढ़े हैं और पेज नंबर k को पहले पेज के रूप में चिह्नित किया है जो नहीं पढ़ा गया था। हमें उन अध्यायों की संख्या ढूंढनी है जिन्हें हमने अभी तक पूरी तरह से नहीं पढ़ा है। P[i] अध्याय पेज नंबरों की रेंज को दर्शाता है।
उदाहरण के लिए, यदि इनपुट P = [[1, 3], [4, 7], [8, 11]]; k = 4 है, तो आउटपुट 2 होगा, क्योंकि हमने पहला अध्याय पढ़ लिया है, पढ़ने के लिए दो और अध्याय हैं।
चरण
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
n := size of P for initialize i := 1, when i <= n, update (increase i by 1), do: if k >= P[i - 1, 0] and k <= P[i - 1, 1], then: return n - i + 1 return 0
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
#includeusing namespace std; int solve(vector > P, int k){ int n = P.size(); for (int i = 1; i <= n; i++){ if (k >= P[i - 1][0] && k <= P[i - 1][1]) return n - i + 1; } return 0; } int main(){ vector > P = { { 1, 3 }, { 4, 7 }, { 8, 11 } }; int k = 4; cout << solve(P, k) << endl; }
इनपुट
{ { 1, 3 }, { 4, 7 }, { 8, 11 } }, 4आउटपुट
2