Open in App
Not now

# Number of elements greater than modified mean in matrix

• Last Updated : 20 Mar, 2023

Normally mean of the matrix is the average of all elements present in the matrix. Consider a modified mean as the floor of the mean of the row-wise minimum and column-wise maximum. The row-wise minimum is the minimum element from each row of the given matrix and the column-wise maximum is the maximum element from each column. Given a matrix of order n*m, find the number of elements greater than the new mean obtained.

```mean = floor ( (sum(row-wise Min) + sum (col-wise Max )) /
(row_no. + col_no.) )```

Examples :

```Input : mat[][] = {1, 5, 6,
2, 3, 0,
5, 2, 8}
Output : 4

Input : mat[][] = {1, 5,
5, 2}
Output : 2```

Find the sum of all row-wise minimums and the sum of all column-wise maximums. Take the mean of this sum by dividing the sum value with (n+m) i.e., the total number of rows and columns. Now, as we have the mean of the row-wise minimum and column-wise maximum, iterate over the matrix to find the number of elements greater than the calculated mean

Below is the implementation of the above approach:

## C++

 `// CPP program to count number of` `// elements greater than mean` `#include ` `using` `namespace` `std;`   `// define constant for row and column` `#define n 4` `#define m 5`   `// function to count elements ` `// greater than mean` `int` `countElements(``int` `mat[][m])` `{` `    ``// For each row find minimum ` `    ``// element and add to rowSum` `    ``int` `rowSum = 0;` `    ``for` `(``int` `i = 0; i < n; i++) {` `        ``int` `min = mat[i][0];` `        ``for` `(``int` `j = 1; j < m; j++)` `            ``if` `(mat[i][j] < min)` `                ``min = mat[i][j];` `        ``rowSum += min;` `    ``}` `    `  `    ``// For each column find maximum ` `    ``// element and add to colSum` `    ``int` `colSum = 0;` `    ``for` `(``int` `i = 0; i < m; i++) {` `        ``int` `max = mat[0][i];` `        ``for` `(``int` `j = 1; j < n; j++)` `            ``if` `(max < mat[j][i])` `                ``max = mat[j][i];` `        ``colSum += max;` `    ``}`   `    ``// Calculate mean of row-wise` `    ``// minimum and column wise maximum` `    ``int` `mean = (rowSum + colSum) / (m + n);` `    `  `    ``// For whole matrix count ` `    ``// elements greater than mean` `    ``int` `count = 0;` `    ``for` `(``int` `i = 0; i < n; i++)` `        ``for` `(``int` `j = 0; j < m; j++)` `            ``if` `(mean < mat[i][j])` `                ``count++;` `    ``return` `count;` `}`   `// driver function` `int` `main()` `{` `    ``int` `mat[n][m] = { 5, 4, 2, 8, 7,` `                      ``1, 5, 8, 3, 4,` `                      ``8, 5, 4, 6, 0,` `                      ``2, 5, 8, 9, 4 };` `    ``cout << countElements(mat);` `    ``return` `0;` `}`

## Java

 `// Java program to count` `// number of elements ` `// greater than mean` `class` `GFG {` `    `  `    ``static` `int` `n = ``4``, m = ``5``;` `    `  `    ``// function to count ` `    ``// elements greater` `    ``// than mean` `    ``static` `int` `countElements(``int` `mat[][])` `    ``{` `        ``// For each row find` `        ``// minimum element ` `        ``// and add to rowSum` `        ``int` `rowSum = ``0``;` `        ``for` `(``int` `i = ``0``; i < n; i++) ` `        ``{` `            ``int` `min = mat[i][``0``];` `        `  `            ``for` `(``int` `j = ``1``; j < m; j++)` `                ``if` `(mat[i][j] < min)` `                    ``min = mat[i][j];` `            `  `            ``rowSum += min;` `        ``}` `        `  `        ``// For each column ` `        ``// find maximum ` `        ``// element and add` `        ``// to colSum` `        ``int` `colSum = ``0``;` `        ``for` `(``int` `i = ``0``; i < m; i++) {` `            ``int` `max = mat[``0``][i];` `        `  `            ``for` `(``int` `j = ``1``; j < n; j++)` `                ``if` `(max < mat[j][i])` `                    ``max = mat[j][i];` `        `  `            ``colSum += max;` `        ``}` `    `  `        ``// Calculate mean of` `        ``// row-wise minimum ` `        ``// and column wise` `        ``// maximum` `        ``int` `mean = (rowSum + colSum) / (m + n);` `        `  `        ``// For whole matrix ` `        ``// count elements ` `        ``// greater than mean` `        ``int` `count = ``0``;` `        ``for` `(``int` `i = ``0``; i < n; i++)` `            ``for` `(``int` `j = ``0``; j < m; j++)` `        `  `                ``if` `(mean < mat[i][j])` `                    ``count++;` `        `  `        ``return` `count;` `    ``}` `    `  `    ``// driver function` `    ``public` `static` `void` `main(String[] args)` `    ``{` `        ``int` `mat[][] = {{ ``5``, ``4``, ``2``, ``8``, ``7``}, ` `                        ``{``1``, ``5``, ``8``, ``3``, ``4``},` `                        ``{``8``, ``5``, ``4``, ``6``, ``0``},` `                        ``{``2``, ``5``, ``8``, ``9``, ``4``}};` `        ``System.out.println(countElements(mat));` `    ``}` `}`   `// This article is contribute by Prerna Saini.`

## Python3

 `# Python3 program to count` `# number of elements` `# greater than mean` `n ``=` `4``;` `m ``=` `5``;`   `# Function to count` `# elements greater` `# than mean` `def` `countElements(mat):` `  `  `    ``# For each row find` `    ``# minimum element` `    ``# and add to rowSum` `    ``rowSum ``=` `0``;` `    `  `    ``for` `i ``in` `range``(n):` `        ``min` `=` `mat[i][``0``];` `        ``for` `j ``in` `range``(``1``, m):` `            ``if` `(mat[i][j] < ``min``):` `                ``min` `=` `mat[i][j];`   `        ``rowSum ``+``=` `min``;`   `    ``# For each column` `    ``# find maximum` `    ``# element and add` `    ``# to colSum` `    ``colSum ``=` `0``;` `    `  `    ``for` `i ``in` `range``(m):` `        ``max` `=` `mat[``0``][i];` `        ``for` `j ``in` `range``(``1``, n):` `            ``if` `(``max` `< mat[j][i]):` `                ``max` `=` `mat[j][i];`   `        ``colSum ``+``=` `max``;`   `    ``# Calculate mean of` `    ``# row-wise minimum` `    ``# and column wise` `    ``# maximum` `    ``mean ``=` `((rowSum ``+` `colSum) ``/` `           ``(m ``+` `n));`   `    ``# For whole matrix` `    ``# count elements` `    ``# greater than mean` `    ``count ``=` `0``;` `    ``for` `i ``in` `range``(n):` `        ``for` `j ``in` `range``(m):` `            ``if` `(mean < mat[i][j]):` `                ``count ``+``=` `1``;`   `    ``return` `count;`   `# Driver code` `if` `__name__ ``=``=` `'__main__'``:` `  `  `    ``mat ``=` `[[``5``, ``4``, ``2``, ``8``, ``7``], ` `           ``[``1``, ``5``, ``8``, ``3``, ``4``], ` `           ``[``8``, ``5``, ``4``, ``6``, ``0``], ` `           ``[``2``, ``5``, ``8``, ``9``, ``4``]];` `    ``print``(countElements(mat));`   `# This code is contributed by 29AjayKumar`

## C#

 `// C# program to count number of ` `// elements greater than mean` `using` `System;`   `class` `GFG {` `    `  `    ``static` `int` `n = 4, m = 5;` `    `  `    ``// function to count elements` `    ``// greater than mean` `    ``static` `int` `countElements(``int` `[,]mat)` `    ``{` `        ``// For each row find minimum` `        ``// element and add to rowSum` `        ``int` `rowSum = 0;` `        ``for` `(``int` `i = 0; i < n; i++) ` `        ``{` `            ``int` `min = mat[i,0];` `        `  `            ``for` `(``int` `j = 1; j < m; j++)` `                ``if` `(mat[i,j] < min)` `                    ``min = mat[i,j];` `            `  `            ``rowSum += min;` `        ``}` `        `  `        ``// For each column find maximum ` `        ``// element and add to colSum` `        ``int` `colSum = 0;` `        ``for` `(``int` `i = 0; i < m; i++) {` `            ``int` `max = mat[0,i];` `        `  `            ``for` `(``int` `j = 1; j < n; j++)` `                ``if` `(max < mat[j,i])` `                    ``max = mat[j,i];` `        `  `            ``colSum += max;` `        ``}` `    `  `        ``// Calculate mean of row-wise minimum ` `        ``// and column wise maximum` `        ``int` `mean = (rowSum + colSum) / (m + n);` `        `  `        ``// For whole matrix count ` `        ``// elements greater than mean` `        ``int` `count = 0;` `        ``for` `(``int` `i = 0; i < n; i++)` `            ``for` `(``int` `j = 0; j < m; j++)` `        `  `                ``if` `(mean < mat[i,j])` `                    ``count++;` `        `  `        ``return` `count;` `    ``}` `    `  `    ``// Driver function` `    ``public` `static` `void` `Main()` `    ``{` `        ``int` `[,]mat = {{5, 4, 2, 8, 7}, ` `                      ``{1, 5, 8, 3, 4},` `                      ``{8, 5, 4, 6, 0},` `                      ``{2, 5, 8, 9, 4}};` `    ``Console.Write(countElements(mat));` `    ``}` `}`   `// This article is contributed by nitin mittal.`

## PHP

 ``

## Javascript

 ``

Output

`11`

Time Complexity: O(n*m), where n is the number of rows and m is the number of columns.
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up
Related Articles