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

C++-এ দুটি অ্যারেতে এলিমেন্ট গণনা করা

দুটি আনসর্টেড অ্যারে arr1[] এবং arr2[] দেওয়া থাকলে, arr1[]-এর প্রতিটি এলিমেন্টের জন্য arr2[]-এ কতগুলো এলিমেন্ট সেটির চেয়ে কম বা সমান সেটা গণনা করতে হবে।

ইনপুট-১

N = 6, M = 9
arr1 = {1, 2, 5, 0, 6, 3}
arr2 = {0,0,1,2,1,3,4,6,8}

আউটপুট

4 5 7 2 8 6

সমাধানের পদ্ধতি

arr2[]-কে সর্ট করে বাইনারি সার্চ ব্যবহার করা হয়।

  • arr1 এবং arr2-এর সাইজ m, n ইনপুট নিন।
  • arr2[]-কে সর্ট করুন।
  • arr1[]-এর প্রতিটি এলিমেন্টের জন্য বাইনারি সার্চ দিয়ে arr2[]-এ উপরের বাউন্ড (upper bound) বের করুন।
  • ইন্ডেক্স + ১ হবে কাউন্ট।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;

void countInSecond(int *nums1, int *nums2, int m, int n) {
    sort(nums2, nums2 + n);
    for (int i = 0; i < m; i++) {
        int s = 0, e = n - 1;
        while (s <= e) {
            int mid = (s + e) / 2;
            if (nums2[mid] <= nums1[i]) s = mid + 1;
            else e = mid - 1;
        }
        cout << e + 1 << " ";
    }
}

int main() {
    int m = 6, n = 9;
    int arr1[m] = {1,2,5,0,6,3};
    int arr2[n] = {0,0,1,2,1,3,4,6,8};
    countInSecond(arr1, arr2, m, n);
    return 0;
}

আউটপুট

4 5 7 2 8 6
  1. C++ ব্যবহার করে দুটি সর্টেড অ্যারে মার্জ করা

  2. দুই অ্যারেতে উপাদান বদলিয়ে যোগফল সমান করার জোড়া খুঁজে বের করা C++-এ

  3. C++-এ কাউন্টিং সোর্ট ব্যবহার করে মেডিয়ান ও মোড বের করা

  4. পয়েন্টার ব্যবহার করে অ্যারে এলিমেন্ট অ্যাক্সেস করার C++ প্রোগ্রাম