https://coderun.yandex.ru/problem/tiles/description Легкая

Решение

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 (b, w) = reader.readLine().split(" ").map { it.toInt() }
    
    // Функция подсчёта чёрных и белых плиток для размеров n×m
    fun countTiles(n: Int, m: Int): Pair<Int, Int> {
        val total = n * m
        val black = if (n == 1 && m == 1) 1 else 2 * (n + m - 2)
        val white = total - black
        return black to white
    }
    
    // Перебираем возможные размеры
    for (m in 1..b) {  // m не может быть больше B, так как минимум 2m чёрных
        for (n in m..b) {  // n ≥ m по условию
            val (black, white) = countTiles(n, m)
            if (black == b && white == w) {
                writer.write("$n $m")
                writer.newLine()
                reader.close()
                writer.close()
                return
            }
        }
    }
}