Решение
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
// Функция для вычисления позиции ученика в общем порядке раздачи вариантов
fun getPosition(row: Int, place: Int): Int {
return (row - 1) * 2 + if (place == 1) 0 else 1
}
fun main(args: Array<String>) {
val reader = BufferedReader(InputStreamReader(System.`in`))
val writer = BufferedWriter(OutputStreamWriter(System.out))
// Читаем входные данные
val n = reader.readLine().toInt()
val k = reader.readLine().toInt()
val petyaRow = reader.readLine().toInt()
val petyaPlace = reader.readLine().toInt()
// Позиция Пети
val petyaPos = getPosition(petyaRow, petyaPlace)
val petyaVariant = petyaPos % k + 1
// Вычисляем ближайшие позиции с тем же вариантом
var vasyaPos = -1
var vasyaRow = -1
var vasyaPlace = -1
var minDistance = Int.MAX_VALUE
// Проверяем позицию после Пети
val nextPos = petyaPos + k
if (nextPos < n) {
val row = nextPos / 2 + 1
val place = if (nextPos % 2 == 0) 1 else 2
val distance = kotlin.math.abs(row - petyaRow)
if (distance < minDistance) {
minDistance = distance
vasyaPos = nextPos
vasyaRow = row
vasyaPlace = place
}
}
// Проверяем позицию перед Петей
val prevPos = petyaPos - k
if (prevPos >= 0) {
val row = prevPos / 2 + 1
val place = if (prevPos % 2 == 0) 1 else 2
val distance = kotlin.math.abs(row - petyaRow)
if (distance < minDistance || (distance == minDistance && row > petyaRow)) {
minDistance = distance
vasyaPos = prevPos
vasyaRow = row
vasyaPlace = place
}
}
// Вывод результата
if (vasyaPos == -1) {
writer.write("-1")
} else {
writer.write("$vasyaRow $vasyaPlace")
}
writer.flush()
reader.close()
writer.close()
}