using
System;
using
System.Collections.Generic;
class
GFG {
static
void
maxDiagonalSum(
int
N,
int
M, List<List<
int
>> a)
{
int
ans =
int
.MinValue;
for
(
int
i = 0; i < N; i++) {
for
(
int
j = 0; j < M; j++) {
int
present_sum = 0;
for
(
int
k = 0; k <= Math.Min(i, j); k++) {
present_sum += a[i - k][j - k];
}
for
(
int
k = 1; i + k < N && j + k < M; k++) {
present_sum += a[i + k][j + k];
}
for
(
int
k = 1; i - k >= 0 && j + k < M; k++) {
present_sum += a[i - k][j + k];
}
for
(
int
k = 1; i + k < N && j - k >= 0; k++) {
present_sum += a[i + k][j - k];
}
ans = Math.Max(ans, present_sum);
}
}
Console.WriteLine(ans);
}
static
void
Main(
string
[] args) {
int
N, M;
N = 4;
M = 4;
List<List<
int
> > arr =
new
List<List<
int
> >{
new
List<
int
>{ 1, 2, 2, 1 },
new
List<
int
>{ 2, 4, 2, 4 },
new
List<
int
>{ 2, 2, 3, 1 },
new
List<
int
>{ 2, 4, 2, 4 }
};
maxDiagonalSum(N, M, arr);
return
;
}
}