https://www.hackerrank.com/contests/w35/challenges/3d-surface-area
縦H,横Wのエリアがあり、(i,j)には高さA[i][j]の箱が置いてある。
敷き詰めるように置いた時にできる図形の表面積を答えよ。
解説
まず、上と下の面積はどちらも、H*Wとなるので、これを足す。
あとは、側面積を足していく。
これは横との差の分だけ壁として面積になるので、差を足し合わせていけばいい。
int H, W, A[101][101]; //--------------------------------------------------------------------------------------------------- void _main() { cin >> H >> W; rep(y, 0, H) rep(x, 0, W) cin >> A[y][x]; int ans = H * W * 2; rep(y, 0, H) { int pre = 0; rep(x, 0, W) ans += abs(pre - A[y][x]), pre = A[y][x]; ans += pre; } rep(x, 0, W) { int pre = 0; rep(y, 0, H) ans += abs(pre - A[y][x]), pre = A[y][x]; ans += pre; } cout << ans << endl; }