Files
2026-10-04 14:27:55 +09:00

61 lines
1.3 KiB
Rust

use std::io::{read_to_string, stdin};
fn main() {
let temp = read_to_string(stdin()).unwrap();
let mut iter = temp
.split_ascii_whitespace()
.map(|x| x.parse::<usize>().unwrap());
let n = iter.next().unwrap();
let m = iter.next().unwrap();
let grid: Vec<Vec<usize>> = (0..n)
.map(|_| (0..m).map(|_| iter.next().unwrap()).collect())
.collect();
let mut maxima = 0;
//
for i in (0..n - 1) {
for j in (0..m - 1) {
let s = grid[i][j] + grid[i][j + 1] + grid[i + 1][j] + grid[i + 1][j + 1];
let m = [
s - grid[i][j],
s - grid[i][j + 1],
s - grid[i + 1][j],
s - grid[i + 1][j + 1],
]
.into_iter()
.max().unwrap();
if m > maxima {
maxima = m;
}
}
}
//
for i in (0..n - 2) {
for j in (0..m) {
let s = grid[i][j] + grid[i + 1][j] + grid[i + 2][j];
if s > maxima {
maxima = s;
}
}
}
//
for i in (0..n) {
for j in (0..m - 2) {
let s = grid[i][j] + grid[i][j + 1] + grid[i][j + 2];
if s > maxima {
maxima = s;
}
}
}
println!("{}", maxima);
}