Решение
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import java.lang.Long.max
import java.lang.Long.MIN_VALUE
fun main(args: Array<String>) {
val reader = BufferedReader(InputStreamReader(System.`in`))
val writer = BufferedWriter(OutputStreamWriter(System.out))
val parts = reader.readLine().split(" ")
val n = parts[0].toInt()
val m = parts[1].toInt()
val a = Array(n) { LongArray(m) }
val b = Array(n) { LongArray(m) }
for (i in 0 until n) {
val rowParts = reader.readLine().split(" ")
for (j in 0 until m) {
a[i][j] = rowParts[j].toLong()
}
}
var totalPleasure = 0L
for (i in 0 until n) {
val rowParts = reader.readLine().split(" ")
for (j in 0 until m) {
b[i][j] = rowParts[j].toLong()
totalPleasure += b[i][j]
}
}
for (j in 0 until m) {
var maxGainJ = MIN_VALUE
var sumPositiveGainsJ = 0L
var hasPositiveGain = false
for (i in 0 until n) {
val gain = a[i][j] - b[i][j]
maxGainJ = max(maxGainJ, gain)
if (gain > 0) {
sumPositiveGainsJ += gain
hasPositiveGain = true
}
}
if (hasPositiveGain) {
totalPleasure += sumPositiveGainsJ
} else {
totalPleasure += maxGainJ
}
}
writer.write(totalPleasure.toString())
writer.newLine()
writer.flush()
}