কম্পিউটার

C++-এ একটি অ্যারের সমস্ত উপাদান জোড়ার মধ্যে k-th ক্ষুদ্রতম পার্থক্য খুঁজে বের করার জন্য প্রোগ্রাম


ধরুন আমাদের একটি তালিকা দেওয়া হয়েছে যাতে বেশ কয়েকটি পূর্ণসংখ্যা রয়েছে। আমাদের অ্যারের প্রতিটি জোড়া মানের মধ্যে পার্থক্য খুঁজে বের করতে হবে এবং k-th ক্ষুদ্রতম পার্থক্য সংখ্যাটি বের করতে হবে। সূচকটি 0 থেকে শুরু হয় এবং k মানটি আমাদের ইনপুট হিসাবে দেওয়া হয়।

সুতরাং, যদি ইনপুটটি সংখ্যার মত হয় ={2, 6, 4, 8}, k =2, তাহলে আউটপুট হবে 2।

জোড়ার মধ্যে পার্থক্য হল −

(2, 6) =4

(2, 4) =2

(2, 8) =6

(6, 4) =2

(6, 8) =2

(4, 8) =4

যদি আমরা মানগুলি সাজাই, তাহলে এটি 2, 2, 2, 4, 4, 6 হয়ে যায়। 2-য় ক্ষুদ্রতম মান হল 2। (সূচী 0 থেকে শুরু হয়)।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • k 1 দ্বারা বাড়ান
  • অ্যারে ইনপুট সাজান
  • le :=0
  • ri :=ইনপুটের শেষ উপাদান - ইনপুটের প্রথম আইটেম
  • যখন le
  • মধ্য :=(লে + রি) / 2
  • tmp :=0
  • lp :=0
  • আরম্ভ করার জন্য i :=1, যখন i <ইনপুটের আকার, আপডেট করুন (i 1 দ্বারা বৃদ্ধি করুন), করুন −
    • ইনপুট করার সময় [i] - input[lp]> mid, do −
      • lp :=lp + 1
    • tmp :=tmp + i - lp
  • যদি tmp> =k হয়, তাহলে −
    • ri :=মধ্য
  • অন্যথায়
    • le :=mid + 1
  • ফেরত le
  • উদাহরণ

    আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

    #include<bits/stdc++.h>
    
    using namespace std;
    
    int solve(vector<int>& input, int k) {
    k++;
    sort(input.begin(), input.end());
    int le = 0;
    int ri = input.back() - input[0];
    while (le < ri) {
    int mid = (le + ri) / 2;
    long long tmp = 0;
    int lp = 0;
    for (int i = 1; i < input.size(); i++) {
    while (input[i] - input[lp] > mid) lp++;
    tmp += i - lp;
    }
    if (tmp >= k)
    ri = mid;
    else
    le = mid + 1;
    }
    return le;
    }
    int main() {
    vector<int> numbers = {2, 6, 4, 8};
    cout<< solve(numbers, 2) <<endl;
    return 0;
    }

    ইনপুট

    vector<int> numbers = {2, 6, 4, 8};
    cout<< solve(numbers, 2) <<endl;

    আউটপুট

    2

    1. বাইনারি অনুসন্ধান পদ্ধতি ব্যবহার করে একটি অ্যারের ন্যূনতম উপাদান খুঁজে পেতে C++ প্রোগ্রাম

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

    3. একটি অ্যারে থেকে ক্ষুদ্রতম উপাদান খুঁজে পেতে C# প্রোগ্রাম

    4. একটি 2D অ্যারেতে K’th ক্ষুদ্রতম উপাদান খুঁজে পেতে C# প্রোগ্রাম