11849. Видалити та перемістити


Відправити розв'язок

Бали: 100
Time limit: 2.0s
Memory limit: 500M

Author:
Problem type
Allowed languages
C++, Java, Pascal, Python

Вам задано послідовність \(P = (p_1,p_2,\ldots,p_N)\), яка містить \(1,2, \dots,N\) рівно один раз кожне. Ви можете виконувати наступні операції від 0 до \(K\) разів у будь-якому порядку:

  • Виберіть один елемент \(P\) і видаліть його.

  • Перенесіть останній член \(P\) на початок послідовності.

Знайдіть лексикографічно найменшу \(P\), яку можна отримати в результаті таких операцій.

Обмеження

  • \(1 \leq N \leq 2 \times 10^5\)
  • \(0 \leq K \leq N-1\)
  • \(1 \leq p_i \leq N\)
  • \((p_1,p_2,\ldots,p_N)\) містить \(1,2,\ldots,N\) рівно один раз кожне.
  • Усі значення у вхідних даних є цілими числами.

Формат вхідних даних

Перший рядок містить цілі числа \(N,K\)

Наступний  рядок містить \(N\) цілих чисел \(p_i\)

Числа у рядках розділяються пропуском.

Формат вихідних даних

У вихідний потік виведіть через пробіл лексикографічно найменшу \(P\), яку можна отримати в результаті виконання операцій.

Примітка

До прикладу 1:

Наступні операції роблять \(P\) рівним (1,2,3).

  • Якщо вилучити перший член, \(P\) дорівнює (5,2,3,1).
  • Перенесення останнього члена на початок робить \(P\) рівною (1,5,2,3).
  • Видалення другого члена робить \(P\) рівною (1,2,3).

Немає способу отримати \(P\) лексикографічно меншою, ніж (1,2,3).

Приклад вхідних даних

5 3
4 5 2 3 1

Приклад вихідних даних

1 2 3

Приклад вхідних даних

3 0
3 2 1

Приклад вихідних даних

3 2 1

Приклад вхідних даних

15 10
12 10 7 2 8 11 9 1 6 14 3 15 13 5 4

Приклад вихідних даних

1 3 4 7 2 8 11 9

Коментарі

Ще немає коментарів.