Первоапрельский контест 2018 |
---|
Закончено |
Все знают спагетти-сортировку. Вы решили реализовать аналоговый алгоритм сортировки, но обнаружили, что у вас закончились спагетти! Единственные макаронные изделия, которые у вас есть - равиоли, но это вас не остановит...
Вы придумали следующий алгоритм. Для каждого числа в массиве ai постройте стопку из ai равиоли. На картинке показана стопка для ai = 4.
Расположите стопки в ряд в том же порядке, в котором числа находились в заданном массиве. Найдите самую высокую стопку (если стопок максимальной высоты несколько, выберите самую левую). Удалите ее из ряда и добавьте ее высоту в конец массива-результата. Сдвиньте стопки так, чтобы между ними не было промежутка на месте удаленной стопки. Повторяйте процесс, пока в ряду остается хотя бы одна стопка.
Вы в восторге от придуманного алгоритма, но, попробовав его на нескольких наборах входных данных, понимаете, что он не всегда сортирует входной массив правильно. Если на любом этапе рядом оказываются две стопки равиоли, чья высота отличается на два или больше, верхний равиоль из более высокой стопки соскальзывает на более низкую стопку.
Вам дан входной массив. Определите, правильно ли отсортирует его описанный алгоритм.
Первая строка входных данных содержит число n (1 ≤ n ≤ 10) — размер массива.
Вторая строка входных данных содержит n целых чисел, разделенных пробелами, ai (1 ≤ ai ≤ 100) — элементы массива.
Выведите "YES", если описанный алгоритм отсортирует его правильно, и "NO" в противном случае.
3
1 2 3
YES
3
3 1 2
NO
Во втором примере массив изменится еще до того, как будет выбрана самая высокая стопка: равиоль из стопки высоты 3 сползет на стопку высоты 1, и результатом работы алгоритма будет массив {2, 2, 2}.
Название |
---|