मान लीजिए कि हमारे पास जोड़े 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
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h> using namespace std; int solve(vector<vector<int>> 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<vector<int>> P = { { 1, 3 }, { 4, 7 }, { 8, 11 } }; int k = 4; cout << solve(P, k) << endl; }
इनपुट
{ { 1, 3 }, { 4, 7 }, { 8, 11 } }, 4
आउटपुट
2