https://coderun.yandex.ru/problem/corrupted-xml/description Средняя

Решение

import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter

fun isCorrectXML(s: String): Boolean {
    val stack = ArrayDeque<String>()
    var i = 0
    val n = s.length

    while (i < n) {
        if (s[i] != '<') {
            return false
        }
        i++
        if (i >= n) return false

        if (s[i] == '/') {
            i++
            val startPos = i
            while (i < n && s[i].isLowerCase()) {
                i++
            }
            val tagName = s.substring(startPos, i)
            if (tagName.isEmpty()) {
                return false
            }
            if (i >= n || s[i] != '>') {
                return false
            }
            i++

            if (stack.isEmpty() || stack.last() != tagName) {
                return false
            }
            stack.removeLast()
        } else {
            val startPos = i
            while (i < n && s[i].isLowerCase()) {
                i++
            }
            val tagName = s.substring(startPos, i)
            if (tagName.isEmpty()) {
                return false
            }
            if (i >= n || s[i] != '>') {
                return false
            }
            i++

            stack.addLast(tagName)
        }
    }

    return stack.isEmpty()
}

fun main() {
    val reader = BufferedReader(InputStreamReader(System.`in`))
    val writer = BufferedWriter(OutputStreamWriter(System.out))

    val input = reader.readLine() ?: ""
    reader.close()

    val candidates = mutableListOf<Char>()
    for (ch in 'a'..'z') {
        candidates.add(ch)
    }
    candidates.add('/')
    candidates.add('<')
    candidates.add('>')

    val n = input.length

    for (i in 0 until n) {
        val oldChar = input[i]
        for (c in candidates) {
            if (c == oldChar) continue
            val modified = buildString {
                append(input.substring(0, i))
                append(c)
                append(input.substring(i + 1))
            }
            if (isCorrectXML(modified)) {
                writer.write(modified)
                writer.newLine()
                writer.close()
                return
            }
        }
    }

    writer.close()
}