contests/abc224/abc224_b.rs (39 lines of code) (raw):
#![allow(non_snake_case)]
use proconio::{fastout, input};
#[fastout]
fn main() {
input! {
H: usize,
W: usize,
A: [[u64; W]; H]
}
let mut left = 0;
let mut right = 0;
for i in 0..H {
for j in 0..W {
if (i == 0 && j == 0) || (i == H - 1 && j == W - 1) {
// 先頭と最後
left += A[i][j] * (W - 1 - j) as u64 * (H - 1 - i) as u64
+ A[i][j] * i as u64 * j as u64;
} else if (i == 0 && j == W - 1) || (i == H - 1 && j == 0) {
// 先頭と最後
right += A[i][j] * (W - 1 - j) as u64 + A[i][j] * (H - 1 - i) as u64;
} else if i == 0 || i == H - 1 {
// 最初行と最終行
left += A[i][j] * (W - 1 - j) as u64 * (H - 1 - i) as u64
+ A[i][j] * i as u64 * j as u64;
right += A[i][j] * (W - 1 - j) as u64;
} else if j == 0 || j == W - 1 {
// 最初行と最終行
left += A[i][j] * (W - 1 - j) as u64 * (H - 1 - i) as u64
+ A[i][j] * i as u64 * j as u64;
right += A[i][j] * (H - 1 - i) as u64;
} else {
// 基本
left += A[i][j] * (W - 1 - j) as u64 * (H - 1 - i) as u64
+ A[i][j] * i as u64 * j as u64;
right += A[i][j] * (W - 1 - j) as u64 + A[i][j] * (H - 1 - i) as u64;
}
}
}
if left <= right {
println!("Yes");
} else {
println!("No");
}
}
// https://atcoder.jp/contests/abc224/tasks/abc224_b