https://coderun.yandex.ru/problem/gradient/description Легкая

Решение

import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter

fun main(args: Array<String>) {
    val reader = BufferedReader(InputStreamReader(System.`in`))
    val writer = BufferedWriter(OutputStreamWriter(System.out))

    // Читаем размеры матрицы
    val (w, h) = reader.readLine().split(" ").map { it.toInt() }

    // Массивы для сумм по строкам и столбцам
    val rowSums = LongArray(h) { 0L }
    val colSums = LongArray(w) { 0L }

    // Вычисляем интенсивность для каждого пикселя аналитически
    for (row in 0 until h) {
        for (col in 0 until w) {
            // Количество прямоугольников, включающих пиксель (row, col)
            val count = (row + 1).toLong() * (h - row).toLong() * (col + 1).toLong() * (w - col).toLong()
            rowSums[row] += count
            colSums[col] += count
        }
    }

    // Выводим суммы по строкам
    writer.write(rowSums.joinToString(" "))
    writer.newLine()

    // Выводим суммы по столбцам
    writer.write(colSums.joinToString(" "))

    reader.close()
    writer.close()
}