https://coderun.yandex.ru/problem/hack-pentagon Сложная

Решение

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 baseQuery = "a".repeat(n)
    writer.write(baseQuery)
    writer.newLine()
    writer.flush()
    
    val baseLine = reader.readLine() ?: ""
    if (baseLine.isEmpty()) return
    val baseAnswer = baseLine.toInt()
    if (baseAnswer == 0) {
        return
    }
    
    val result = CharArray(n) { 'a' }
    
    for (i in 0 until n) {
        val queryBuilder = StringBuilder(baseQuery)
        queryBuilder.setCharAt(i, 'z')
        val query = queryBuilder.toString()
        writer.write(query)
        writer.newLine()
        writer.flush()
        
        val ansLine = reader.readLine() ?: ""
        if (ansLine.isEmpty()) return
        val ans = ansLine.toInt()
        if (ans == 0) {
            return
        }
        val delta = ans - baseAnswer
        val d = (25 - delta) / 2
        result[i] = ('a'.toInt() + d).toChar()
    }
    
    val password = String(result)
    writer.write(password)
    writer.newLine()
    writer.flush()
    
    return
}