Решение
class Solution {
fun imageSmoother(img: Array<IntArray>): Array<IntArray> {
val m = img.size
val n = img[0].size
val pref = Array(m + 1) { IntArray(n + 1) }
var i = 0
while (i < m) {
var rowSum = 0
val row = img[i]
val prefRow = pref[i + 1]
val prefRowUp = pref[i]
var j = 0
while (j < n) {
rowSum += row[j]
prefRow[j + 1] = prefRowUp[j + 1] + rowSum
j++
}
i++
}
val res = Array(m) { IntArray(n) }
val mLast = m - 1
val nLast = n - 1
i = 0
while (i < m) {
var j = 0
while (j < n) {
val r1 = if (i > 0) i - 1 else 0
val c1 = if (j > 0) j - 1 else 0
val r2 = if (i < mLast) i + 1 else mLast
val c2 = if (j < nLast) j + 1 else nLast
val sumRect = pref[r2 + 1][c2 + 1] - pref[r1][c2 + 1] - pref[r2 + 1][c1] + pref[r1][c1]
val cnt = (r2 - r1 + 1) * (c2 - c1 + 1)
res[i][j] = sumRect / cnt
j++
}
i++
}
return res
}
}