Решение
import java.io.BufferedReader
import java.io.InputStreamReader
import java.io.BufferedWriter
import java.io.OutputStreamWriter
fun main() {
val reader = BufferedReader(InputStreamReader(System.`in`))
val writer = BufferedWriter(OutputStreamWriter(System.out))
// Читаем N и M
val (n, m) = reader.readLine().split(" ").map { it.toInt() }
// Читаем цены продавцов
val a = reader.readLine().split(" ").map { it.toLong() }.sorted()
// Читаем цены покупателей
val b = reader.readLine().split(" ").map { it.toLong() }.sortedDescending()
// Вычисляем максимальную прибыль
var profit = 0L // Используем Long, так как цены до 10^9
var i = 0 // Индекс для продавцов
var j = 0 // Индекс для покупателей
while (i < n && j < m) {
if (a[i] < b[j]) { // Если сделка выгодна
profit += b[j] - a[i]
i++
j++
} else {
break // Если текущая цена покупки больше или равна цене продажи, дальше нет смысла
}
}
// Выводим результат
writer.write(profit.toString())
writer.newLine()
reader.close()
writer.close()
}