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

C++ কোড: ব্যাংক থেকে সর্বাধিক ব্যাংক নোট সংগ্রহ


মান লক্ষ্য করুন তিনটি সংখ্যা k, l এবং m, এবং আরেকটি n এলিমেন্টের অ্যারে A। একজন ডাকাত ব্যাংক ডাকাতি করতে ব্যর্থ হলেও সফলভাবে ব্যাংকের সব সেফ খুলতে পেরেছিল। ব্যাংক ক্লায়েন্ট এই ব্যর্থ ডাকাতির সুযোগ নিতে চায় এবং সেফ থেকে কিছু টাকা চুরি করতে চায়। একটি লাইনে অনেক সেফ আছে। সব সেফ মিলিয়ে মোট n টি ব্যাংক নোট আছে। i-তম ব্যাংক নোট সেফ A[i]-তে আছে। ব্যাংক কর্মী এখন সেফ k-তে আছে। দুজন সিকিউরিটি গার্ড, একজন সেফ l রাখवाले করে যাতে l < k, তাই প্রথম গার্ড スタッフের বাম পাশে। অন্যজন সেফ m রাখवाले করে যাতে m > k, (সে スタッフের ডান পাশে)। দুজন গার্ডই হिले না। প্রতি সেকেন্ডে, স্টাফ বা বর্তমান সেফ থেকে সব ব্যাংক নোট নিতে পারে বা যেকোনো এডজাসেন্ট সেফে যেতে পারে। কিন্তু সে যেকোনো সুরক্ষিত সেফ ভিজিট করতে পারবে না যেকোনো সময়ে, কারণ সে চুরির অভিযোগে আটকানো হতে পারে। আমাদের スタッフ যে সর্বাধিক ব্যাংক নোট সংগ্রহ করতে পারে তা বের করতে হবে।

তাই, যদি ইনপুট হয় k = 5; l = 3; m = 7; A = [4, 7, 5, 5, 3, 6, 2, 8], তবে আউটপুট হবে ৪, কারণ

ধাপসমূহ

এটি সমাধান করার জন্য, আমরা এই ধাপগুলো অনুসরণ করব −

c1 := 0
n := size of A
c1 := 0
for initialize i := 0, when i < n, update (increase i by 1), do:
    x := A[i]
    if x > l and x < m, then:
        (increase c1 by 1)
return c1

উদাহরণ

বेहतर বোঝার জন্য ইমপ্লিমেন্টেশন দেখি −

#include <bits/stdc++.h>
using namespace std;
int solve(int k, int l, int m, vector<int> A){
    int c1 = 0, x;
    int n = A.size();
    c1 = 0;
    for (int i = 0; i < n; i++){
        x = A[i];
        if (x > l && x < m)
            c1++;
    }
    return c1;
}
int main(){
    int k = 5;
    int l = 3;
    int m = 7;
    vector<int> A = { 4, 7, 5, 5, 3, 6, 2, 8 };
    cout << solve(k, l, m, A) << endl;
}

ইনপুট

5, 3, 7, { 4, 7, 5, 5, 3, 6, 2, 8 }

আউটপুট

4

  1. সি++ কোড: রোবটের ফাইনাল পজিশন পাওয়ার জন্য ন্যূনতম স্টেপ গণনা করুন

  2. C++-এ সমতল তলে পারালেলোগ্রাম গণনা: মিডপয়েন্ট পদ্ধতি

  3. C++-এ অ্যারেতে সর্বোচ্চ সन्नিহিত জোড় সংখ্যা (Contiguous Even Numbers) এর গণনা

  4. C++-এ main() ফাংশন কি ওভারলোড করা যায়?