Count the number of pairs that have column sum greater than row sum
Last Updated :
15 Sep, 2022
Given a matrix of size NxN. The task is to count the number of pair of indices (i, j) such that the sum of j-th column is greater than the sum of i-th row.
Examples:
Input : N = 2, mat[][] = {{1, 2},
{3, 4}}
Output : 2
The 2 valid pairs are (1, 1) and (1, 2).
Input : N = 3, mat[][] = { { 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 } };
Output : 4
Approach:
The idea is to pre-calculate the row sum and column sum for each row and column respectively and then count the number of possible valid pairs (i,j) such that column sum of j-th column is greater than the row sum for i-th row.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
#define N 3
int countPairs( int a[N][N])
{
int sumr[N] = { 0 }, sumc[N] = { 0 };
for ( int i = 0; i < N; i++)
for ( int j = 0; j < N; j++) {
sumr[i] += a[i][j];
sumc[j] += a[i][j];
}
int count = 0;
for ( int i = 0; i < N; i++)
for ( int j = 0; j < N; j++)
if (sumc[i] > sumr[j])
count++;
return count;
}
int main()
{
int a[][N] = { { 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 } };
cout << countPairs(a);
return 0;
}
|
Java
import java.io.*;
class GFG
{
static int N = 3 ;
static int countPairs( int a[][])
{
int sumr[] = new int [N] ;
int sumc[] = new int [N] ;
for ( int i = 0 ; i < N; i++)
for ( int j = 0 ; j < N; j++)
{
sumr[i] += a[i][j];
sumc[j] += a[i][j];
}
int count = 0 ;
for ( int i = 0 ; i < N; i++)
for ( int j = 0 ; j < N; j++)
if (sumc[i] > sumr[j])
count++;
return count;
}
public static void main (String[] args)
{
int a[][] = { { 1 , 2 , 3 },
{ 4 , 5 , 6 },
{ 7 , 8 , 9 } };
System.out.println (countPairs(a));
}
}
|
Python3
N = 3
def countPairs(a):
sumr = [ 0 for i in range (N)]
sumc = [ 0 for i in range (N)]
for i in range (N):
for j in range (N):
sumr[i] + = a[i][j]
sumc[j] + = a[i][j]
count = 0
for i in range (N):
for j in range (N):
if (sumc[i] > sumr[j]):
count + = 1
return count
if __name__ = = '__main__' :
a = [[ 1 , 2 , 3 ],[ 4 , 5 , 6 ], [ 7 , 8 , 9 ]]
print (countPairs(a))
|
C#
using System;
class GFG
{
static int N = 3;
static int countPairs( int [,]a)
{
int []sumr = new int [N] ;
int []sumc = new int [N] ;
for ( int i = 0; i < N; i++)
for ( int j = 0; j < N; j++)
{
sumr[i] += a[i, j];
sumc[j] += a[i, j];
}
int count = 0;
for ( int i = 0; i < N; i++)
for ( int j = 0; j < N; j++)
if (sumc[i] > sumr[j])
count++;
return count;
}
public static void Main()
{
int [,]a = { { 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 } };
Console.WriteLine(countPairs(a));
}
}
|
Javascript
<script>
let N = 3;
function countPairs(a)
{
let sumr = new Array(N);
sumr.fill(0);
let sumc = new Array(N);
sumc.fill(0);
for (let i = 0; i < N; i++)
for (let j = 0; j < N; j++)
{
sumr[i] += a[i][j];
sumc[j] += a[i][j];
}
let count = 0;
for (let i = 0; i < N; i++)
for (let j = 0; j < N; j++)
if (sumc[i] > sumr[j])
count++;
return count;
}
let a = [ [ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ] ];
document.write(countPairs(a));
</script>
|
Time Complexity: O(N2)
Share your thoughts in the comments
Please Login to comment...