nটি সমস্যা, কঠিনতা A[i]। আমলের দক্ষতা k। সে লিস্টের দু প্রান্ত থেকে সমস্যা সমাধান করে। k-র চেয়ে কঠিন সমস্যা সমাধান করতে পারে না। দু প্রান্তে k-র চেয়ে কঠিন সমস্যা পেলে থামবে। কতগুলো সমস্যা সমাধান করবে?
উদাহরণ
A = [4, 2, 3, 1, 5, 1, 6, 4], k = 4 → আউটপুট: ৫
বাম: ৪, ডান: ৪, ডান আর নয় (৬), বাম: ২, ৩, ১ = মোট ৫।
সমাধানের ধাপসমূহ
বাম থেকে যতগুলো ≤k সেগুলো কাউন্ট করুন (l)। ডান থেকে যতগুলো ≤k সেগুলো কাউন্ট করুন (r)। উত্তর = l + (n-1-r) বা n (সবই ≤k হলে)।
উদাহরণ
#include <bits/stdc++.h> using namespace std; int solve(vectorA, int k) { int n = A.size(); int l = 0, r = n - 1; for (int i = 0; i < n; ++i) if (A[i] <= k && l == i) ++l; while (A[r] <= k) --r; if (l == n) return n; else return n - 1 - r + l; } int main() { vector A = {4, 2, 3, 1, 5, 1, 6, 4}; int k = 4; cout << solve(A, k) << endl; return 0; }
ইনপুট
{4, 2, 3, 1, 5, 1, 6, 4}, 4
আউটপুট
5