Решение
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
// Функция добавляет минимальное количество элементов в конец массива, чтобы он стал палиндромом
private fun symmetricSequence(nums: IntArray): IntArray {
val seq = mutableListOf(*nums.toTypedArray()) // Создаем изменяемый список на основе входного массива
val size = nums.size
var count = 0
// Добавляем элементы в конец, пока последовательность не станет палиндромом
while (!isPalindromic(seq)) {
seq.add(size, nums[count])
count++
}
return seq.subList(nums.size, seq.size).toIntArray() // Возвращаем добавленные элементы
}
// Проверяет, является ли список палиндромом
private fun isPalindromic(list: List<Int>) = list == list.reversed()
fun main() {
val reader = BufferedReader(InputStreamReader(System.`in`))
val writer = BufferedWriter(OutputStreamWriter(System.out))
reader.readLine() // Читаем размер массива (не используется)
val nums = reader.readLine().trim().split(" ").map { it.toInt() }.toIntArray()
val res = symmetricSequence(nums)
writer.write("${res.size}\\n") // Выводим количество добавленных элементов
writer.write(res.joinToString(" ") + "\\n") // Выводим сами элементы
reader.close()
writer.close()
}