競プロ典型 90 問 004 - Cross Sum
こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回はAtCoderの問題を解いていきます。 問題は以下です。 004 - Cross Sum(★2) 実装 二次元の累積和ですね。 とりあえず愚直に解いてみます。 package main import "fmt" func main() { var h, w int fmt.Scan(&h, &w) g := make([][]int, h) for i := 0; i < h; i++ { g[i] = make([]int, w) for j := 0; j < w; j++ { fmt.Scan(&g[i][j]) } } hg := make([]int, h) for i := 0; i < h; i++ { s := 0 for j := 0; j < w; j++ { s += g[i][j] } hg[i] = s } wg := make([]int, w) for i := 0; i < w; i++ { s := 0 for j := 0; j < h; j++ { s += g[j][i] } wg[i] = s } ans := make([][]int, h) for i := 0; i < h; i++ { ans[i] = make([]int, w) for j := 0; j < w; j++ { ans[i][j] = hg[i] + wg[j] - g[i][j] } } for i := 0; i < h; i++ { for j := 0; j < w; j++ { if j < w - 1 { fmt.Printf("%d ", ans[i][j]) } else { fmt.Printf("%d", ans[i][j]) } } fmt.Println() } } ですがこれだとタイムオーバーしてしまいました。 ...