https://coderun.yandex.ru/problem/tableau/description | Легкая |
---|
Вы работаете в компании, которая изготавливает электронные табло для различных видов спорта: футбола, волейбола, баскетбола. Табло отображает счёт между двумя командами во время матча в формате A : B, где A — количество очков первой команды, а B — количество очков второй команды.
Табло записывает изменение в очках, и игрока, который заработал очки команде. От вас требуется добавить в табло возможность определять, какой игрок заработал больше всех очков по итогам матча.
В начале игры у обеих команд 0 очков. В рамках задачи не требуется отслеживать принадлежность игроков к командам −− иначе говоря, если игрок забил гол и в те, и в другие ворота, итоговая статистика с табло должна посчитать ему 2 заработанных очка.
Ввод:
2 Alice Bob 5 1:0 Alice 1:1 Bob 2:1 Alice 4:1 Alice 4:5 BobВывод:
Bob 5
Ввод:
2 Alice Bobby 1 0:2 BobbyВывод:
Bobby 2
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 n = reader.readLine().toInt()
// Читаем имена игроков
val players = Array(n) { reader.readLine() }
// Читаем количество событий
val m = reader.readLine().toInt()
// Карта для подсчёта очков каждого игрока
val scores = mutableMapOf<String, Int>()
// Обрабатываем события
var prevA = 0
var prevB = 0
repeat(m) {
val (score, player) = reader.readLine().split(" ", limit = 2)
val (a, b) = score.split(":").map { it.toInt() }
// Определяем, сколько очков заработал игрок
val points = when {
a > prevA -> a - prevA
b > prevB -> b - prevB
else -> 0 // На случай ошибки ввода
}
scores[player] = scores.getOrDefault(player, 0) + points
prevA = a
prevB = b
}
// Находим игрока с максимальным количеством очков
var maxScore = 0
var maxPlayer = ""
for ((player, score) in scores) {
if (score > maxScore || (score == maxScore && player > maxPlayer)) {
maxScore = score
maxPlayer = player
}
}
writer.write("$maxPlayer $maxScore")
writer.newLine()
reader.close()
writer.close()
}