Решение
class Solution {
fun allCellsDistOrder(rows: Int, cols: Int, rCenter: Int, cCenter: Int): Array<IntArray> {
val d0 = rCenter + cCenter
val d1 = rCenter + (cols - 1 - cCenter)
val d2 = (rows - 1 - rCenter) + cCenter
val d3 = (rows - 1 - rCenter) + (cols - 1 - cCenter)
val maxD = maxOf(d0, d1, d2, d3)
val cnt = IntArray(maxD + 1)
var r = 0
while (r < rows) {
var c = 0
while (c < cols) {
val d = kotlin.math.abs(r - rCenter) + kotlin.math.abs(c - cCenter)
cnt[d]++
c++
}
r++
}
var sum = 0
var i = 0
while (i <= maxD) {
val t = cnt[i]
cnt[i] = sum + t
sum += t
i++
}
val res = Array(rows * cols) { IntArray(2) }
r = 0
while (r < rows) {
var c = 0
while (c < cols) {
val d = kotlin.math.abs(r - rCenter) + kotlin.math.abs(c - cCenter)
val idx = --cnt[d]
res[idx][0] = r
res[idx][1] = c
c++
}
r++
}
return res
}
}