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

C++-এ রেঞ্জ অ্যাডিশন II (Range Addition II)


ধরুন আমাদের একটি m × n মেট্রিক্স M আছে যা সম্পূর্ণ ০ দিয়ে আরম্ভ করা হয়েছে এবং আমাদের কাছে অনেকগুলো আপডেট অপারেশন রয়েছে। অপারেশনগুলো একটি ২D অ্যারে দ্বারা প্রতিনিধিত্ব করা হয়, যেখানে প্রতিটি অপারেশন দুটি ধনাত্মক পূর্ণসংখ্যা x এবং y দ্বারা নির্দেশিত হয়। এর অর্থ হলো M[i][j]-এ ১ যোগ করা হবে এমন সব i এর জন্য যারা ০ থেকে x-1 পর্যন্ত এবং সব j এর জন্য যারা ০ থেকে y-1 পর্যন্ত। সমস্ত অপারেশন সম্পন্ন করার পর মেট্রিক্সে সর্বোচ্চ পূর্ণসংখ্যার মান কতবার রয়েছে তা বের করতে হবে।

উদাহরণস্বরূপ, m = 3, n = 3 এবং operations = [[2,2],[3,3]] হলে আউটপুট হবে 4।

প্রক্রিয়া

প্রাথমিক মেট্রিক্স:

000
000
000

[2,2] অপারেশন করার পর:

110
110
000

[3,3] অপারেশন করার পর:

221
221
111

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

  • minR := m, minC := n নিন।
  • প্রতিটি অপারেশন op এর জন্য:
    • minR := min(minR, op[0])
    • minC := min(minC, op[1])
  • ফলাফল: minR * minC রিটার্ন করুন।

C++ কোড উদাহরণ

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

class Solution {
public:
    int maxCount(int m, int n, const vector<vector<int>>& ops) {
        int minR = m;
        int minC = n;
        for (const auto& op : ops) {
            minR = min(minR, op[0]);
            minC = min(minC, op[1]);
        }
        return minR * minC;
    }
};

int main() {
    Solution ob;
    vector<vector<int>> v = {{2,2},{3,3}};
    cout << ob.maxCount(3, 3, v);
    return 0;
}

ইনপুট

3, 3, {{2,2},{3,3}}

আউটপুট

4
  1. সি++-এ স্মলেস্ট রেঞ্জ II (Smallest Range II)

  2. C++-এ অ্যারেতে রেঞ্জের গড় (Mean of Range in Array)

  3. নির্দিষ্ট রেঞ্জে সেট বিট কপি করা C++-এ

  4. C++-এ রেঞ্জ সাম কোয়েরি - ইমিউটেবল (Range Sum Query - Immutable)