Решение
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import java.util.ArrayDeque
fun main(args: Array<String>) {
val reader = BufferedReader(InputStreamReader(System.`in`))
val writer = BufferedWriter(OutputStreamWriter(System.out))
val player1Deck = ArrayDeque<Int>()
val player2Deck = ArrayDeque<Int>()
try {
reader.readLine()?.trim()?.split("\\\\s+".toRegex())?.filter { it.isNotEmpty() }?.forEach {
player1Deck.addLast(it.toInt())
}
} catch (e: Exception) {
System.err.println("Ошибка чтения карт игрока 1: ${e.message}")
return
}
try {
reader.readLine()?.trim()?.split("\\\\s+".toRegex())?.filter { it.isNotEmpty() }?.forEach {
player2Deck.addLast(it.toInt())
}
} catch (e: Exception) {
System.err.println("Ошибка чтения карт игрока 2: ${e.message}")
return
}
if (player1Deck.size != 5 || player2Deck.size != 5) {
System.err.println("Неверное количество карт.")
}
var turns = 0
val maxTurns = 1_000_000
var winner = ""
while (turns < maxTurns) {
if (player1Deck.isEmpty()) {
winner = "second"
break
}
if (player2Deck.isEmpty()) {
winner = "first"
break
}
val card1 = player1Deck.removeFirst()
val card2 = player2Deck.removeFirst()
val player1WinsRound = when {
card1 == 0 && card2 == 9 -> true
card1 == 9 && card2 == 0 -> false
else -> card1 > card2
}
if (player1WinsRound) {
player1Deck.addLast(card1)
player1Deck.addLast(card2)
} else {
player2Deck.addLast(card1)
player2Deck.addLast(card2)
}
turns++
}
val finalResult = when {
winner == "first" -> "first $turns"
winner == "second" -> "second $turns"
turns == maxTurns -> "botva"
player1Deck.isEmpty() -> "second $turns"
player2Deck.isEmpty() -> "first $turns"
else -> "botva"
}
writer.write(finalResult)
writer.newLine()
reader.close()
writer.close()
}