class NumMatrix {
public:
vector<vector<int>> arr;
NumMatrix(vector<vector<int>>& matrix) {
vector<vector<int>> temp(matrix.size(),vector<int>(matrix[0].size()+1,0)); // only for initializing( 0 for every element ) a temporary vector is taken
for(int i=0;i<matrix.size();i++){
for(int j=0;j<matrix[0].size();j++){
temp[i][j+1]=temp[i][j]+matrix[i][j]; // pre-computing the row sum
}
}
arr=temp;
}
int sumRegion(int row1, int col1, int row2, int col2) {
int sum=0;
for(int i=row1;i<=row2;i++){
sum+=arr[i][col2+1]-arr[i][col1]; // appending the row sum with column constraints
}
return sum;
}
};