কম্পিউটার টিউটোরিয়াল

C++ প্রোগ্রাম: লিস্টের দু প্রান্ত থেকে সমস্যা সমাধানের সংখ্যা

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(vector A, 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
  1. C++ প্রোগ্রাম: n কে ১ করার ন্যূনতম অপারেশন (২,৩,৫ দিয়ে ভাগ)

  2. C++ প্রোগ্রাম: সিডি কাউন্ট ও প্রতিটি সিডির ধাপ সংখ্যা

  3. সি++ প্রোগ্রাম: প্রতিটি সিটি থেকে ভিজিট করা যেতে পারে এমন সিটির সংখ্যা গণনা

  4. C++ প্রোগ্রাম: দিয়ে দেয়া আকারের ডোডেকাগন बनाने के तरीক সংখ্যা গণনা