using
System;
using
System.Collections.Generic;
public
class
GFG
{
static
Dictionary<
int
,
int
> pre_compute(
int
[,] arr,
int
K,
Dictionary<
int
,
int
> mp)
{
for
(
int
i = 0; i < K; i++) {
int
n = arr.GetLength(1);
if
(mp.ContainsKey(arr[i,0]))
mp[arr[i,0]]= Math.Min(mp[arr[i,0]] + 1, i + 1);
else
mp.Add(arr[i,0], Math.Min(1, i + 1));
for
(
int
j = 1; j < n; j++) {
arr[i,j] += arr[i,j - 1];
if
(mp.ContainsKey(arr[i,j]))
mp[arr[i,j]] = Math.Min(mp[arr[i,j]] + 1, i + 1);
else
mp.Add(arr[i,j], Math.Min(1, i + 1));
}
}
return
mp;
}
static
int
min_common_sum(
int
[,] arr,
int
K)
{
Dictionary<
int
,
int
> mp =
new
Dictionary<
int
,
int
>();
mp = pre_compute(arr, K, mp);
for
(
int
i = 0; i < arr.GetLength(0); i++) {
if
(mp[arr[0,i]] == K)
return
arr[0,i];
}
return
-1;
}
public
static
void
Main(String[] args)
{
int
K = 3;
int
[,] arr
= { { 5, 2, 4 ,0}, { 1, 4, 1, 1 }, { 2, 3,0,0 } };
int
ans = min_common_sum(arr, K);
Console.Write(ans);
}
}