Skip to content

# Count rows with sum exceeding sum of the remaining Matrix

• Difficulty Level : Hard
• Last Updated : 19 May, 2021

Given a matrix mat[][] of dimensions N * M, the task is to count the number of rows whose sum exceeds the sum of the remaining elements of the Matrix.

Examples:

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

Input: mat[][] = {{1, 5}, {2, 3}}
Output: 1
Explanation:
Sum of elements of the first row {1, 5} exceeds the sum of the remaining matrix {2, 3}.

Input: mat[][] = {{2, -1, 5}, {-3, 0, -2}, {5, 1, 2}}
Output: 2

Approach: To solve the problem, the idea is to pre-calculate the total sum of the elements of the given matrix and for every row, check if the sum of elements of the current row is greater than the sum of the elements of the rest of the matrix, i.e., currSum > (totalSum – currSum). For every row satisfying the afore-mentioned condition, increase count. Finally, print the value of count obtained after the complete traversal of the matrix.

Below is the implementation of the above approach:

## C++

 `// C++ program to implement``// the above approach``#include``using` `namespace` `std;``#define N 3``#define M 3` `// Function to count the number of rows``// whose sum exceeds the sum of``// elements of the remaining matrix`` ``void` `countRows(``int` `mat[M][N])``{``   ``// To store the result``   ``int` `count = 0;` `   ``// Stores the total sum of``   ``// the matrix elements``   ``int` `totalSum = 0;` `   ``// Calculate the total sum``   ``for` `(``int` `i = 0; i < N; i++)``   ``{``     ``for` `(``int` `j = 0; j < M; j++)``     ``{``       ``totalSum += mat[i][j];``     ``}``   ``}` `   ``// Traverse to check for each row``   ``for` `(``int` `i = 0; i < N; i++)``   ``{``     ``// Stores the sum of elements``     ``// of the current row``     ``int` `currSum = 0;` `     ``// Calculate the sum of elements``     ``// of the current row``     ``for` `(``int` `j = 0; j < M; j++)``     ``{``       ``currSum += mat[i][j];``     ``}` `     ``// If sum of current row exceeds``     ``// the sum of rest of the matrix``     ``if` `(currSum > totalSum - currSum)` `       ``// Increase count``       ``count++;``   ``}` `   ``// Print the result``   ``cout << count;``}` `// Driver Code``int` `main()``{``  ``// Given matrix``  ``int` `mat[N][M] = {{2, -1, 5},``                   ``{-3, 0, -2},``                   ``{5, 1, 2}};``  ` `  ``// Function Call``  ``countRows(mat);``}` `// This code is contributed by Rajput-Ji`

## Java

 `// Java program to implement``// the above approach``import` `java.io.*;` `class` `GFG {` `    ``// Function to count the number of rows``    ``// whose sum exceeds the sum of``    ``// elements of the remaining matrix``    ``static` `void` `countRows(``int``[][] mat)``    ``{``        ``// Stores the matrix dimensions``        ``int` `n = mat.length;``        ``int` `m = mat[``0``].length;` `        ``// To store the result``        ``int` `count = ``0``;` `        ``// Stores the total sum of``        ``// the matrix elements``        ``int` `totalSum = ``0``;` `        ``// Calculate the total sum``        ``for` `(``int` `i = ``0``; i < n; i++) {``            ``for` `(``int` `j = ``0``; j < m; j++) {``                ``totalSum += mat[i][j];``            ``}``        ``}` `        ``// Traverse to check for each row``        ``for` `(``int` `i = ``0``; i < n; i++) {` `            ``// Stores the sum of elements``            ``// of the current row``            ``int` `currSum = ``0``;` `            ``// Calculate the sum of elements``            ``// of the current row``            ``for` `(``int` `j = ``0``; j < m; j++) {``                ``currSum += mat[i][j];``            ``}` `            ``// If sum of current row exceeds``            ``// the sum of rest of the matrix``            ``if` `(currSum > totalSum - currSum)` `                ``// Increase count``                ``count++;``        ``}` `        ``// Print the result``        ``System.out.println(count);``    ``}` `    ``// Driver Code``    ``public` `static` `void` `main(String[] args)``    ``{``        ``// Given matrix``        ``int``[][] mat``            ``= { { ``2``, -``1``, ``5` `},``                ``{ -``3``, ``0``, -``2` `},``                ``{ ``5``, ``1``, ``2` `} };` `        ``// Function Call``        ``countRows(mat);``    ``}``}`

## Python3

 `# Python3 program to implement``# the above approach` `# Function to count the number of rows``# whose sum exceeds the sum of elements``# of the remaining matrix``def` `countRows(mat):``    ` `    ``# Stores the matrix dimensions``    ``n ``=` `len``(mat)``    ``m ``=` `len``(mat[``0``])` `    ``# To store the result``    ``count ``=` `0` `    ``# Stores the total sum of``    ``# the matrix elements``    ``totalSum ``=` `0` `    ``# Calculate the total sum``    ``for` `i ``in` `range``(n):``        ``for` `j ``in` `range``(m):``            ``totalSum ``+``=` `mat[i][j]` `    ``# Traverse to check for each row``    ``for` `i ``in` `range``(n):` `        ``# Stores the sum of elements``        ``# of the current row``        ``currSum ``=` `0` `        ``# Calculate the sum of elements``        ``# of the current row``        ``for` `j ``in` `range``(m):``            ``currSum ``+``=` `mat[i][j]` `        ``# If sum of current row exceeds``        ``# the sum of rest of the matrix``        ``if` `(currSum > totalSum ``-` `currSum):` `            ``# Increase count``            ``count ``+``=` `1` `    ``# Print the result``    ``print``(count)` `# Driver Code``if` `__name__ ``=``=` `'__main__'``:``    ` `    ``# Given matrix``    ``mat ``=` `[ [ ``2``, ``-``1``, ``5` `],``            ``[ ``-``3``, ``0``, ``-``2` `],``            ``[ ``5``, ``1``, ``2` `] ]` `    ``# Function call``    ``countRows(mat)` `# This code is contributed by mohit kumar 29`

## C#

 `// C# program to implement``// the above approach``using` `System;``class` `GFG{` `// Function to count the number of rows``// whose sum exceeds the sum of``// elements of the remaining matrix``static` `void` `countRows(``int``[,] mat)``{``  ``// Stores the matrix dimensions``  ``int` `n = mat.GetLength(0);``  ``int` `m = mat.GetLength(1);` `  ``// To store the result``  ``int` `count = 0;` `  ``// Stores the total sum of``  ``// the matrix elements``  ``int` `totalSum = 0;` `  ``// Calculate the total sum``  ``for` `(``int` `i = 0; i < n; i++)``  ``{``    ``for` `(``int` `j = 0; j < m; j++)``    ``{``      ``totalSum += mat[i, j];``    ``}``  ``}` `  ``// Traverse to check for each row``  ``for` `(``int` `i = 0; i < n; i++)``  ``{``    ``// Stores the sum of elements``    ``// of the current row``    ``int` `currSum = 0;` `    ``// Calculate the sum of elements``    ``// of the current row``    ``for` `(``int` `j = 0; j < m; j++)``    ``{``      ``currSum += mat[i, j];``    ``}` `    ``// If sum of current row exceeds``    ``// the sum of rest of the matrix``    ``if` `(currSum > totalSum - currSum)` `      ``// Increase count``      ``count++;``  ``}` `  ``// Print the result``  ``Console.WriteLine(count);``}` `// Driver Code``public` `static` `void` `Main(String[] args)``{``  ``// Given matrix``  ``int``[,] mat = {{2, -1, 5},``                ``{-3, 0, -2},``                ``{5, 1, 2}};` `  ``// Function Call``  ``countRows(mat);``}``}` `// This code is contributed by 29AjayKumar`

## Javascript

 ``
Output
`2`

Time Complexity: O(N * M)
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up