AtCoder の問題を Rust で解いていきます。AtCoder も Rust も初心者ですが、温かい目で成長を見守っていただけるとありがたいです。
今回は、競プロ典型90問の004 - Cross Sum(★2)を解きました。
H行W列の行列が与えられ、その行列の全てのマスに対して 同じ行または同じ列(自分自身を含む) の値の合計を求める問題です。自分と同じ行と列の合計を足し合わせ、自分自身の値を引けば良いです。ただし、全てのマスで行・列の合計を計算すると時間が足りなくなることに注意です。
また、2次元の配列を扱うということで今回は勉強がてら ndarray
を使用しました。proconio::input!
では ndarray::Array
で読み込めなかったため、Vec<Vec<usize>>
で入力を読み込んだ後に変換しました。ndarray::Array
で直接読み込む方法はあるんでしょうか?有識者の方教えてください...。
Vec
の1次元化は vec.into_iter().flatten().collect()
とする