Решение
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
fun main() {
val reader = BufferedReader(InputStreamReader(System.`in`))
val writer = BufferedWriter(OutputStreamWriter(System.out))
val n = reader.readLine().trim().toInt()
val sequence = reader.readLine().trim().split("\\\\s+".toRegex()).map { it.toInt() }.toIntArray()
if (n == 0) {
writer.write("")
writer.close()
return
}
val dp = IntArray(n) { 1 }
val prev = IntArray(n) { -1 }
for (i in 1 until n) {
for (j in 0 until i) {
if (sequence[i] > sequence[j] && dp[j] + 1 > dp[i]) {
dp[i] = dp[j] + 1
prev[i] = j
}
}
}
var maxLen = dp[0]
var endIndex = 0
for (i in 1 until n) {
if (dp[i] >= maxLen) {
maxLen = dp[i]
endIndex = i
}
}
val result = mutableListOf<Int>()
var currentIndex = endIndex
while (currentIndex != -1) {
result.add(sequence[currentIndex])
currentIndex = prev[currentIndex]
}
writer.write(result.reversed().joinToString(" "))
writer.flush()
reader.close()
writer.close()
}