У вас є стопка млинців на тарілці, а зверху глобус сиропу настільки густий, що він не може бігти по сторонах. Ви не будете раді їсти, поки обидва обличчя кожного млинця принаймні не торкнуться сиропу, але зараз лише одне обличчя верхнього млинця.
Ви знаєте, що сироп ніколи не просочиться навіть одним млинцем, але його можна перенести на невизначений термін за допомогою контакту віч-на-віч між двома млинцями. Після того, як обличчя млинця торкнулося сиропу, воно вважається покритим сиропом назавжди, і зробить будь-яке обличчя без сиропу з покриттям, яке також торкнеться сиропу. Можна переносити сироп і з верхньої сторони тарілки.
Ви продовжуєте покривати кожне обличчя млинців сиропом, вставляючи шпатель під один або кілька млинців і гортаючи їх по всьому, точно так, як це робиться при сортуванні млинців . (На жаль, цей шпатель стійкий до сиропу, і не допомагає поширювати сироп, торкаючись обличчя млинців.) На жаль, ви не втрачаєте слідів, які обличчя млинців торкнулися сиропу, але ви пам’ятаєте про зроблені вами фліп.
З огляду на ваші минулі фліп, чи можете ви визначити, чи всі ваші млинці ще покриті сиропом?
Виклик
Напишіть програму, яка приймає натуральне число N для кількості млинців, і список натуральних чисел (усіх <= N) для зроблених до цього моменту фліп. Кожне число у списку представляє кількість млинців, які були перевернуті. Виведіть величину, якщо млинці зроблені з покриттям, а помилкове значення - якщо їх немає. (визначення правди / фальш )
Вхід повинен надходити з stdin або командного рядка, а вихід повинен переходити до stdout (або найближчих альтернатив). Добре, якщо для вашого введення потрібно трохи додаткового форматування: наприклад, [1, 1, 2, 2]
замість 1 1 2 2
списку.
Приклади
Припустимо, N = 2, тому у нас є стопка двох млинців на тарілці, починаючи з сиропу зверху.
Якщо список є 1 1 2 2
, це означає, що ми ...
- перевернути верхній млинець - покриття верхньої частини нижнього млинця
- знову переверніть верх - покривши початкову нижню частину верхнього млинця
- переверніть обидва - покриття пластини
- переверніть обидва знову - покривши початкову нижню частину нижнього млинця
Оскільки всі чотири грані покриті, вихід буде чимось подібним True
або 1
.
Якщо список є 1 2 2 1
, це означає, що ми ...
- перевернути верхній млинець - покриття верхньої частини нижнього млинця
- перевернути обидва - покриття нічого
- переверніть обидва знову - покриття нічого
- знову переверніть верх - покривши початкову нижню частину верхнього млинця
Оскільки обличчя, що торкається пластини, все ще не містить сиропу, вихід буде чимось подібним False
або 0
.
Примітки
- Перелік списків може бути довільно великим і може бути порожнім, і в цьому випадку результат є хибним.
- Пластина діє як носій сиропу, але не має значення, покривається вона чи ні. (Насправді будь-який фліп-розчин буде покривати тарілку, оскільки обличчя млинця, якого вона торкається, повинен бути покритий, але незалежно.)
- Пластину не можна перевернути.
- Ви можете припустити, що ці млинці - це одиничні диски, на яких немає жодної сторони, лише дві протилежні грані.
Оцінка балів
Це код-гольф. Виграє найкоротше рішення в байтах .
Put syrup on the pancakes!