ধরুন আমাদের জোড়া P এর একটি অ্যারে আছে। যেখানে P[i] আকারে (l, r) আছে এবং আরেকটি সংখ্যা আছে k। বিবেচনা করুন আমরা n অধ্যায় সহ একটি বই পড়তে যাচ্ছি। যাতে বইটির একটি পৃষ্ঠা সঠিকভাবে একটি অধ্যায়ের অন্তর্গত এবং প্রতিটি অধ্যায়ে কমপক্ষে একটি পৃষ্ঠা থাকে। আমরা কিছু পৃষ্ঠা পড়েছি এবং প্রথম পাতা হিসাবে k নম্বর দিয়ে পৃষ্ঠাটিকে চিহ্নিত করেছি যা পড়া হয়নি। আমরা এখনও সম্পূর্ণরূপে পড়া হয়নি অধ্যায় সংখ্যা খুঁজে বের করতে হবে. P[i] অধ্যায়ের পৃষ্ঠা সংখ্যার রেঞ্জ প্রতিনিধিত্ব করে।
সুতরাং, যদি ইনপুট হয় P =[[1, 3], [4, 7], [8, 11]]; k =4, তাহলে আউটপুট হবে 2, কারণ আমরা প্রথম অধ্যায় পড়েছি, আরও দুটি অধ্যায় পড়ার জন্য আছে।
পদক্ষেপ
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
n :=Pfor ইনিশিয়ালাইজ i :=1 এর আকার, যখন i <=n, আপডেট (i 1 দ্বারা বাড়ান), করবেন:যদি k>=P[i - 1, 0] এবং k <=P[i - 1, 1], তারপর:রিটার্ন n - i + 1return 0
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
#includeনেমস্পেস ব্যবহার করে std;int solve(vector > P, int k){ int n =P.size(); জন্য (int i =1; i <=n; i++){ যদি (k>=P[i - 1][0] &&k <=P[i - 1][1]) ফেরত দেয় n - i + 1; } রিটার্ন 0;}int main(){ vector > P ={ { 1, 3 }, { 4, 7 }, { 8, 11 } }; int k =4; cout < ইনপুট
<প্রে>{ { 1, 3 }, { 4, 7 }, { 8, 11 } }, 4
আউটপুট
2