Упорядкуй коней
Обмеження: 2 сек., 256 МіБ
У Зеника з Марічкою є n жеребців, пронумерованих від 1 до n, яких вони тримають у стайні. У стайні є n стійл, розташованих у ряд, також пронумерованих від 1 до n. Кінь з номером i має своє стійло з тим самим номером i.
Одного разу Марічка після важкого робочого дня на фермі заводила коней до стайні, та бідолашна переплутала порядок коней. У стійло i вона поставила коня з номером pi.
Зеник зауважив, що щось у стайні не так. Він хоче переставити коней на свої місця.
Вам задано число k.
Зеник спершу розділить коней в стайні на k проміжків. Кожен проміжок містить коней, що стоять у стійлах з номерами від l до r, тобто коней з номерами pl,pl+1,…,pr, де 1≤l≤r≤n. Кожен кінь входитиме рівно до одного проміжку. Після цього Зеник зможе переставляти проміжки між собою як завгодно.
Скажіть, чи зможе Зеник переставити коней у правильному порядку, тобто 1,2,…,n?
Вхідні дані
У першому рядку задано два цілі числа n і k — кількість коней у стайні і кількість проміжків, на які їх можна розділити.
У другому рядку задано n цілих чисел pi — номер коня, що стоїть у стійлі з номером i.
Вихідні дані
В одному рядку виведіть Yes
, якщо Зеник може переставити
коней у правильному порядку, або No
, якщо не може.
Обмеження
1≤k≤n≤3⋅105,
1≤pi≤n,
усі pi різні.
Оцінювання складається з таких блоків:
по 1 балу за кожен приклад з умови,
10 балів: k=1,
15 балів: k=2,n≤200,
20 балів: k=2,
30 балів: n≤200,
23 бали: без додаткових обмежень.
Бали за блок ви отримаєте, тільки якщо ваша програма пройде всі тести з блоку.
Приклади
Вхідні дані (stdin) | Вихідні дані (stdout) |
---|---|
7 4 5 6 4 1 2 3 7 | Yes |
Вхідні дані (stdin) | Вихідні дані (stdout) |
---|---|
7 3 5 6 4 1 2 3 7 | No |
Примітки
Нехай коні стоять у стайні в порядку (5,6,4,1,2,3,7). Їх можна поділити на чотири проміжки (5,6),(4),(1,2,3),(7), та переставити ці проміжки місцями: (1,2,3),(4),(5,6),(7). Тоді коні стоятимуть у правильному порядку.
Однак не вийде поділити коней на три проміжки, щоб правильно їх переставити.