Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Range Addition II in C++
Suppose we have one m * n matrix called M and this is initialized with all 0's and we also have several update operations. Now, operations are represented by a 2D array, and each operation is represented by an array with two positive integers x and y, it means M[i][j] should be added by one for all values i in range 0 to a - 1 and all values j in range 0 to b - 1. We have to find the count of the number of maximum integer in the matrix after performing all the operations.
So, if the input is like m = 3, n = 3 and operations = [[2,2],[3,3]]., then the output will be 4,
Initially matrix is like
| 0 | 0 | 0 |
| 0 | 0 | 0 |
| 0 | 0 | 0 |
After performing [2,2], we will get
| 1 | 1 | 0 |
| 1 | 1 | 0 |
| 0 | 0 | 0 |
After performing [2,2], we will get
| 2 | 2 | 1 |
| 2 | 2 | 1 |
| 1 | 1 | 1 |
To solve this, we will follow these steps −
minR := m, minC := n
-
for op in ops array
minR := minimum of minR and op[0]
minC := minimum of minC and op[1]
return minR * minC
Example
Let us see the following implementation to get a better understanding −
#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;
}
};
main(){
Solution ob;
vector<vector<int>> v = {{2,2},{3,3}};
cout << (ob.maxCount(3,3,v));
}
Input
3,3,{{2,2},{3,3}}
Output
4