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

C++-এ সর্টেড অ্যারে তৈরির জন্য সর্বোচ্চ চাঙ্ক (Max Chunks To Make Sorted II) বের করা

ধরুন আমাদের একটি পূর্ণসংখ্যার অ্যারে arr দেওয়া আছে। আমাদের অ্যারেটিকে কিছু পার্টিশনে ভাগ করে প্রতিটি পার্টিশন আলাদা করে সর্ট করতে হবে। সার্ট করার পর সেগুলো একসাথে যোগ করলে একটি সর্টেড অ্যারে পাওয়া যাবে। আমাদের কাজ হল সর্বোচ্চ কতগুলো পার্টিশন করা সম্ভব তা বের করা।

উদাহরণ

ইনপুট: [3,2,4,5,5] → আউটপুট: 4

ব্যাখ্যা: পার্টিশনগুলো হতে পারে [3,2], [4], [5], [5]।

সমাধানের ধাপসমূহ

  1. maxOfLeft[i] = সূচক i পর্যন্ত বাম পাশের সর্বোচ্চ মান।
  2. minOfRight[i] = সূচক i থেকে ডান পাশের সর্বনিম্ন মান।
  3. যদি minOfRight[i+1] >= maxOfLeft[i] হয়, তবে i-এর পর একটি পার্টিশন করা যায়।
  4. এই শর্ত পূরণ করে সর্বোচ্চ পার্টিশন গণনা করুন।

প্রোগ্রাম উদাহরণ

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

class Solution {
public:
    int maxChunksToSorted(vector<int>& arr) {
        int cnt = 1;
        int n = arr.size();
        vector<int> maxOfLeft(n);
        vector<int> minOfRight(n);
        
        maxOfLeft[0] = arr[0];
        for (int i = 1; i < n; i++)
            maxOfLeft[i] = max(maxOfLeft[i - 1], arr[i]);
        
        minOfRight[n - 1] = arr[n - 1];
        for (int i = n - 2; i >= 0; i--)
            minOfRight[i] = min(minOfRight[i + 1], arr[i]);
        
        for (int i = 0; i < n - 1; i++) {
            if (minOfRight[i + 1] >= maxOfLeft[i])
                cnt++;
        }
        return cnt;
    }
};

int main() {
    Solution ob;
    vector<int> v = {3,2,4,5,5};
    cout << (ob.maxChunksToSorted(v));
}

ইনপুট

{3,2,4,5,5}

আউটপুট

4
  1. C++-এ একটি রেখায় সর্বোচ্চ পয়েন্ট (Max Points on a Line)

  2. C++ প্রোগ্রাম: Max Heap ইমপ্লিমেন্টেশন

  3. সোর্টেড অ্যারে বাস্তবায়নের C++ প্রোগ্রাম

  4. Python-এ অ্যারে সাজানোর জন্য সর্বোচ্চ চাংক বের করার প্রোগ্রাম