Язык программирования

640 задачвместе с подтемами
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.
Громозека является одним из ведущих в Галактике космических археологов. Возвращаясь домой с очередной археологической экспедиции, он решил привезти своим четырем детям их любимые печенья. Ему осталось только вбить необходимое количество килограмм на экране терминала, и автомат сразу выдаст ему печенье . Но, вот незадача, на терминале сломались все кнопки с цифрами и буквами. Работают только цифры 0 и 1.  Громозека в задумчивости, как же ему заказать ровно n килограмм. Он придумал, что может сделать несколько заказов таким образом, чтобы каждый заказ мог состоять только из цифр 0 и 1. Вот только Громозека очень торопится, потому что до старта корабля осталось совсем немного времени. Помогите Громозеке определить минимальное число раз, которым ему придется воспользоваться автоматом, чтобы купить ровно n килограмм и порадовать своих детей! 

Например, чтобы купить 12 киллограмм печенья Громозека может воспользоваться автоматом дважды, купив сначала 11 килограмм печенья, затем - 1 килограмм.

Входные данные
Программа получает на вход целое число n (1 <= n <= 109).

Выходные данные
Выведите ответ на задачу.
 
 
Примеры
Входные данные Выходные данные
1
1234
4
По одну сторону улицы находятся дома с нечётными номерами (1, 3, 5, …), по другую сторону – с чётными (2, 4, 6, …). Дом № 1 находится напротив дома № 2, дом № 3 – напротив дома № 4 и т. д. До соседнего дома нужно идти вдоль по улице одну минуту, неважно, с какой стороны улицы он находится (то есть от дома № 1 нужно идти одну минуту как до дома № 3, так и до дома № 4). До дома, стоящего напротив, идти не нужно.



Громозека вышел на улицу из дома номер A и должен дойти до дома номер B. Определите, сколько минут ему нужно идти вдоль по улице.

Запрещено использовать какие-либо алгоритмические конструкции для решения данной задачи. Можно использовать только арифметические операции (без использования встроенных функций).

Входные данные

Программа получает на вход два различных целых положительных числа A и B,не превосходящие 2×109, – номера домов.

Выходные данные
Программа должна вывести одно число – искомое количество минут.

 

Примеры
Входные данные Выходные данные
1 1
8
3

 

Вам дали сумму денег в рублях и попросили разделить эту сумму между всеми детьми. Назовем Счастливчиками тех детей, которые получат ровно по 8 рублей при дележе денег по следующим правилам:
  • Все деньги должны быть распределены.
  • Каждый должен получить как минимум 1 рубль.
  • Никто не должен получить 4 рубля (это совсем не счастливая сумма).
Определите максимальное количество Счастливчиков, если вы разделите деньги в соответствии с вышеупомянутыми правилами. Если нет способа разделить деньги, верните -1.

Входные данные
В первой строке записана сумма денег (money - целое число), которую вам дали. Вторая строка содержит количество детей (children - целое число), между которыми необходимо разделить данную сумму.
 

Ограничения

  • 1 <= money <= 200
  • 2 <= children <= 30

Выходные данные
Выведите максимальное количество Счастливчиков.
 
 
Примеры
Входные данные Выходные данные
1 20
3
1
2 16
2
2

Алиса со своим отцом профессором Селезневым записывают на листочке числа определенной последовательности. У Алисы каждый i-й член последовательности равен i2, у профессора Селезнева i-й член последовательности равен i3. Они решили создать новую возрастающую последовательность путем объединения двух своих последовательностей. При этом, если в обоих последовательностях есть одинаковое число, то в новой последовательности оно присутствует только один раз. 

Алиса и профессор просят вас угадать i-е число в новой объединенной последовательности. 


Входные данные

В единственной строке входного файла дано натуральное число i (1 <= i <= 107).


Выходные данные

Выведите i-е число новой последовательности. 

 
Примеры
Входные данные Выходные данные
1 1 1
2 2 4
3 4 9
В некоторой стране каждый год проходит олимпиада по выживанию. В финале участвуют по 4 человека от каждой из n провинций. По результатам соревнования составляется рейтинг, в который входят все 4n участников в порядке убывания баллов, равных баллов у участников не бывает. Дипломами награждаются ровно 50 % лучших участников (то есть если общее число участников было равно m, то награждаются m/2 первых участников из общего рейтинга).
После публикации предварительного рейтинга тренеры команд могут подавать апелляции против каких-то других провинций, обвинив участников из этой провинции в нарушении правил олимпиады. Каждый тренер может не подавать аппеляции или подать апелляцию на одну или несколько команд соперников.
Если жюри удовлетворит апелляцию против команды, то все участники из данной провинции будут дисквалифицированы и удалены из таблицы результатов. При этом общее число количество участников уменьшится на 4, а количество призёров олимпиады уменьшится на 2.
Тренеры команд каждой из провинций хотят улучшить результаты участников из своей провинции (то есть сделать так, чтобы количество участников олимпиады из этой провинции, которые стали призёрами, увеличилось хотя бы на одного). Для этого они планируют подать апелляции против команд других провинцией. Для каждой провинции определите, какое минимальное количество аппеляций должно удовлетворить жюри, чтобы количество участников из этой провинции, награждённых дипломами, увеличилось. Обратите внимание на то, что вы должны дать ответ для каждой провинции независимо, то есть без учёта возможных апелляций, поданных другими командами.

Входные данные
В первой строке входных данных содержится одно целое число n (1 ≤ n ≤ 25000) — количество провинций, участвовавших в олимпиаде. Следующие 4·n строк содержат рейтинг участников олимпиады, в порядке от лучшего участника к худшему. В i-й строке содержится число от 1 до n — номер команды i-го по рейтингу участника олимпиады. Гарантируется, что в списке участников каждое число от 1 до n встречается ровно 4 раза.
Выходные данные
Программа должна вывести n строк. В i-й строке необходимо вывести минимальное число апелляций, которое должно удовлетворить жюри, чтобы количество награждённых дипломами участников из i-й команды увеличилось. Если улучшить результаты i-й команды путём подачи апелляций нельзя, то в i-й строке должно быть записано число −1.
Примеры
Входные данные Выходные данные
1 2
1
1
1
2
2
2
2
1
-1
1
2 2
1
1
2
2
2
2
1
1
 
-1
-1
3 3
3
3
2
2
1
3
3
2
2
1
1
1
2
1
-1


Замечание
В первом примере из условия в олимпиаде участвовали две команды, и рейтинг участников выглядит так: 1, 1, 1, 2, 2, 2, 2, 1. По предварительному рейтингу дипломами награждаются три участника команды 1 и один участник команды 2. Команда 1 не может улучшить свои результаты, так как если команда 2 будет дисквалифицирована, то дипломы будут выданы всего 2 участникам из 4, но первоначально у команды 1 было 3 диплома. А вторая команда может увеличить количество призёров до 2, подав апелляцию против команды 1.
Во втором примере у обеих команд уже есть по 2 диплома, а при удалении одной из команд останется всего 2 призовых места, то есть при подаче апелляции против другой команды у каждой команды количество дипломов не изменится.
В третьем примере участвовали 3 команды и первоначально дипломами награждались участники из команд 3, 3, 2, 2, 1, 3. Команда 1 может улучшить свои результаты, если подаст две апелляции: против команд 2 и 3. Тогда останется только 4 участника (все они из команды 1), из них дипломами будет награждено двое. Команда 2 может улучшить свои результаты, если подаст одну апелляцию против команды 3. Тогда останется 8 участников и дипломами будут награждены 4 из них: 2, 2, 1, 2, — и у команды 2 станет 3 призёра вместо 2. Команда номер 3 не может улучшить свой результат при помощи апелляций.
 
Как известно, осенью и зимой светает поздно и так хочется утром ещё хоть немного поспать, а не идти в школу! Некоторые школьники готовы даже одеваться, не открывая глаз, лишь бы отложить момент пробуждения. Вот и Саша решил, что майку и носки он вполне может вытащить из шкафа на ощупь с закрытыми глазами и только потом включить свет и одеться.
В шкафу у Саши есть два ящика. В одном из них лежит A синих и B красных маек, в другом — C синих и D красных пар носков. Саша хочет, чтобы и майка, и носки были одного цвета. Он вслепую вытаскивает M маек и N пар носков. В первое же утро Саша задумался, какое минимальное суммарное количество предметов одежды (M + N) он должен вытащить, чтобы среди них гарантированно оказались майка и носки одного цвета. Какого именно цвета окажутся предметы одежды, для Саши совершенно неважно.

Входные данные
На вход программе подаются четыре целых неотрицательных числа A, B, C, D, записанных в отдельных строках: A — количество синих маек, B — количество красных маек, C — количество синих носков, D — количество красных носков. Все числа не превосходят 109 . Гарантируется, что в шкафу есть одноцветный комплект из майки и носков.

Выходные данные
Программа должна вывести два числа: количество маек M и количество пар носков N, которые должен взять Саша. Необходимо, чтобы среди M маек и N пар носков обязательно нашлась одноцветная пара, при этом сумма M + N должна быть минимальной.
 
Примеры
Входные данные Выходные данные
1 6
2
7
3
3 4

Замечание
В примере из условия в шкафу лежит A = 6 синих маек и B = 2 красных маек. Если взять 3 майки, то среди них обязательно найдётся синяя. В другом ящике лежит C = 7 пар синих носков и D = 3 пары красных носков. Если взять 4 пары, то среди них обязательно будет пара синих
носков. Поэтому если взять вслепую 3 майки и 4 пары носков, то среди них обязательно найдётся одноцветный (синий) комплект из майки и носков.
В левом верхнем углу прямоугольного поля размера N ×M сидит Черепашка. Она хочет закрасить некоторые клетки по спирали, закручивающейся к центру, как на рисунке:

Определите, сколько клеток ей придётся закрасить.
Входные данные
Первая строка входных данных содержит число N — высоту прямоугольника, вторая строка содержит число M — ширину прямоугольника. Все числа — целые положительные и не превосходят 2 × 109.
Выходные данные
Программа должна вывести одно целое число — количество клеток, закрашенных Черепашкой.
Обратите внимание, что ответ в этой задаче может превышать возможное значение 32-битной целочисленной переменной, поэтому необходимо использовать 64-битные целочисленные типы данных (тип int64 в языке Pascal, тип long long в C++, тип long в Java и C#).
 
Примеры
Входные данные Выходные данные
1 5
6
20
2 1
5
5

Петя обладает обширной библиотекой книг. Сейчас он стоит возле полки с приключенческими рассказами. На ней расположены n книг. Все книги на полке у Пети всегда пронумерованы слева направо. Книга с номером i имеет ai страниц. На полке, возле которой сейчас стоит Петя, количество страниц в каждой книге различно.

Особенность полок в библиотеке Пети такова, что он может брать только крайнюю книгу с полки (то есть либо самую левую, либо самую правую).

Петя уезжает на каникулы к бабушке и хочет с собой взять две книги, самую толстую и самую тонкую. Помогите Пете узнать, какое минимальное количество книг ему необходимо убрать с полки, прежде чем в его руках окажутся две нужные ему книги. Обратите внимание, что самую толстую и самую тонкую книги Петя также убирает в с полки, поэтому они тоже считаются. 

 

Входные данные
В первой строке записано одно целое число n (2 <= n <= 100) - количество книг на полке. Во второй строке находится n целых различных чисел a1, a2, ..., an (1 <= ai <= 106) - количество страниц в книге.

 

Выходные данные
Выведите одно целое число — минимальное количество книг, которое необходимо Пете убрать с полки.

 
Примеры
Входные данные Выходные данные
1
5
1 5 4 3 2
2
2
8
2 1 3 4 5 6 8 7
4
В свободное от учебы время Даша очень любит смотреть мультсериалы, снятые по комиксам. Она уже выбрала мультсериал для просмотра, но есть одна проблема. Достаточно часто в экранизациях комиксов серии снимают не последовательно по хронологии событий, а в каком-то странном порядке. 
Чтобы избавить себя от путаницы, Даша решила, что выберет и посмотрит ровно три серии, причем так, чтобы номера этих серий шли в возрастающем порядке и годы, в которые происходят события в сериях, тоже шли в возрастающем порядке. Для каждой серии известно, в каком году происходят события этой серии.
Помогите Даше найти три подходящие серии для просмотра.

Входные данные
В первой строке входных данных записано единственное целое число N — количество серий (3 <= N <= 105 ).
В каждой из следующих N строк записано по одному целому числу — год, в который происходят события очередной серии (каждый год является целым числом от 1 до 109 включительно).

Выходные данные
Программа должна вывести три целых числа i, j, k (1 <= i < j < k <= N) — номера искомых трех серий. Серии нумеруются числами от 1 до N. Если ответов несколько, выведите любой из них. Если ответа не существует, выведите одно число ноль.
Примеры
Входные данные Выходные данные
1 4
1985
2000
1990
2005
1 2 4
2 4
2000
2000
2001
2001
0

Замечание
В первом примере нужно выбрать серии 1, 2, 4, действие которых происходит в 1985, 2000 и 2005 годах соответственно.
Во втором примере выбрать три серии, удовлетворяющие условиям задачи, нельзя.
В новогодний сладкий подарок нужно положить ровно N конфет. На складе хранятся конфеты, собранные по одной штуке и по три штуки в одной упаковке. Всего имеется A упаковок по одной конфете и B упаковок по три конфеты. Определите, какое наибольшее число подарков можно собрать из имеющихся конфет, если упаковки из трёх конфет нельзя вскрывать и разделять на отдельные конфеты.

Входные данные
Первая строка входных данных содержит целое положительное число N — количество конфет в одном подарке. Вторая строка входных данных содержит целое неотрицательное число A — количество упаковок из одной конфеты. Третья строка содержит целое неотрицательное число B — количество упаковок из трёх конфет.
Чиcло N и общее число конфет на складе не превосходят 2 × 109.

Выходные данные
Программа должна вывести единственное целое число — максимальное число подарков, которое можно собрать из имеющихся конфет
Примеры
Входные данные Выходные данные
1 4
8
2
3


Замечание
В примере из условия на складе имеются 8 упаковок из одной конфеты и 2 упаковки из трёх конфет. В один подарок необходимо положить 4 конфеты. Два подарка можно собрать, используя 1 упаковку из одной конфеты и 1 упаковку из трёх конфет. Ещё один подарок можно собрать из 4 упаковок из одной конфеты. Всего было использовано 6 упаковок из одной конфеты и 2 упаковки из трёх конфет, осталось 2 упаковки из одной конфеты, которых не хватит на дополнительный подарок.
Алиса решила, что нужно поставить код доступа к управлению кораблем. Она считает, что код доступа должен иметь вид a:b:c, где a, b и c - натуральные числа. Причем, число a должно быть простым, число b - являться палиндромом, а число c - чётным. Капитан Зелёный придумал код.

Вам поручили задание написать программу, которая бы выводила True, если придуманный код доступа соответствует правилам и False - если не соответствует. Чтобы вашу программу можно было применять для других проверок, капитан просит вас оформить программу, с использованием трех функций:
- isPrime(n) - функция, которая определяет является число n простым или нет;
- isPalindrome(n) - функция, которая определяет является ли число n палиндромом;
- isEven(n) - функция, которая определяет является ли число n четным.

Все проверки числа на простоту, палиндром и четность необходимо осуществлять только с использованием данных функций!

Входные данные
Программа получает на вход одну строку - код доступа, который придумал капитан Зелёный.

Выходные данные
Выведите True, если код доступа соответствует правилам Алисы, в противном случае выведите False.
 
Примеры
Входные данные Выходные данные
1 7:101:14 True
2 101:101:101 False
3 qwerty False

Анна Николаевна в детском саду играет с детьми в игру. По кругу стоят стулья. Все стулья пронумерованы от 1 до N (1 <= N <= 100000). Имя каждого ребенка закодировано натуральным числом, не превышающим 109. Анна Николаевна хлопает в ладоши раз  (|K| <= 100000) тихо или громко. Если Анна Николаевна хлопает в ладоши тихо, то все дети должны быстро пересесть на K стульев вправо. Если же Анна Николаевна хлопает в ладоши громко, то все дети должны быстро пересесть на K стульев влево. 

Чтобы Анне Николаевна было проще определять все ли дети пересели верно, напишите для нее программу, которая бы определяла положение каждого ребенка после пересаживания. 


В данной задаче нельзя использовать дополнительные массивы (списки). Обратите внимание, что нужно именно преобразовать имеющийся массив(список) и распечатать его целиком, а не создать новый, даже назвав его тем же самым именем (это возможно в языке Python).


Входные данные

В первой строке дано натуральное число N, во второй строке N целых чисел, а в последней целое число K. Все числа во входных данных не превышают 109. Если число K > 0, это означает, что Анна Николаевна хлопала в ладоши тихо. Число K < 0, это означает, что Анна  Николаевна хлопала в ладоши громко.


Выходные данные

Требуется вывести коды детей, которые будут занимать стулья с 1 по N после пересаживания. 

 
Примеры
Входные данные Выходные данные
1
5
5 3 7 4 6
3
7 4 6 5 3 
Громозека и Алиса играют в следующую игру. Изначально, они ставят на числовую прямую три точки в целые координаты. Затем, один из них стирает любую крайнюю точку и ставит ее посередине между двумя оставшимися в координату с целым числом. Если между оставшимися точками четное количество целых чисел, то можно поставить точку в любую из них.

Например, если изначально стояли точки в координатах 3, 6, 8, то первым ходом можно стереть точку с координатой 3 и поставить ее в координату 7. Или стереть точку с координатой 8 и поставить ее в координату 4 или 5.

Чтобы долго не думать, Громозека и Алиса решили, что на каждый ход они будут тратить не более двух секунд.

Вас просят вычислить, какое максимальное количество секунд будет продолжаться игра, если известно начальное расположение трех точек.

Входные данные
Программа получает на вход три целых числа A, B и C (1<=A < B < C <= 1000). Каждое число записано с новый строки.

Выходные данные
Выведите ответ на задачу.
 
 
Примеры
Входные данные Выходные данные
1 3
6
8
4
Питание школьника, при грамотной организации, должно обеспечивать содержание белков, жиров и углеводов в соотношении 10%:30%:60% (допускается погрешность +/- 1%). Детский лагерь составляет меню, состоящее из N различных продуктов. Для каждого продукта известна энергетическая ценность в белках (P), жирах (F) и углеводах (C), а также количество каждого вида продукта в меню (K).

Определите, является ли составленное меню сбалансированным или нет.


Входные данные
Программа получает на вход несколько строк. В первой строке записано число натуральное число N (N <= 100) количество различных продуктов. В каждой из следующих N строк записаны по 4 числа: Pi, Fi, Ci и Ki. Все числа вещественные, не превосходят 103.

Выходные данные
Выведите YES, если меню сбалансированное, и NO в противном случае. 
 
 
Примеры
Входные данные Выходные данные
1 3
0 1 1 2
1 2 7 1
3 7 13 1
YES
По данному действительному числу a и натуральному n вычислите сумму \(1+a+a^2+...+a^n\), не используя формулу суммы геометрической прогрессии. Время работы программы должно быть пропорционально n.

Входные данные
Программа получает на вход два неотрицательных числа. В певрой строке записано действительное (вещественное) число a, во второй - целое число n.

Выходные данные
Выведите ответ на задачу. 
 
 
Примеры
Входные данные Выходные данные
1 2
2
7

У исполнителя “Водолей” есть два сосуда, первый объемом A литров, второй объемом B литров, а также кран с водой. Водолей может выполнять следующие операции:

  1. Наполнить сосуд A (обозначается >A).
  2. Наполнить сосуд B (обозначается >B).
  3. Вылить воду из сосуда A (обозначается A>).
  4. Вылить воду из сосуда B (обозначается B>).
  5. Перелить воду из сосуда A в сосуд B (обозначается как A>B).
  6. Перелить воду из сосуда B в сосуд A (обозначается как B>A).

Команда переливания из одного сосуда в другой приводят к тому, что либо первый сосуд полностью опустошается, либо второй сосуд полность наполняется.



Входные данные
Программа получает на вход три натуральных числа A, B, N, не превосходящих 104.

Выходные данные

Необходимо вывести алгоритм действий Водолея, который позволяет получить в точности N литров в одном из сосудов, если же такого алгоритма не существует, то программа должна вывести текст Impossible.

Количество операций в алгоритме не должно превышать 105. Гарантируется, что если задача имеет решение, то есть решение, которое содержит не более, чем 105 операций.

 
Примеры
Входные данные Выходные данные
1
3
5
1
>A
A>B
>A
A>B
2
3
5
6
Impossible
Фермер Джон упорядочил N своих коров (1 ≤ N ≤ 1000) каждая из которых имеет одну из двух пород Holsteins или Guernseys. Он зафиксировал этот порядок в виде строки из N символов, каждый из которых либо H, либо G соответственно. К несчастью, когда коровы прибыли на ферму и он снова их выстроил, они образовали строку, отличную от исходной.

Назовём эти две строки A и B, где A - исходная строка, которую он хотел увидеть, B - строка которая получилась по прибытию коров. ФД попросил помощи у кузена Бена.

После нескольких месяцев работы, Бен создал замечательную машину MCBF-3000, которая способна взять любую подстроку и поменять в ней все G на H, а все H на G. Теперь ФД хочет узнать минимальное количество применений этой машины, которые позволят превратить строку B в строку A. Помогите ФД.

Входные данные
Первая строка содержит N, а следующие две строки содержат строки A и B. Каждая из строк состоит только из символов H и G.
Выходные данные
Выведите минимальное количество раз применения машины MCBF-3000 для трансформации строки B в строку A.
Примеры
Входные данные Выходные данные
1
7
GHHHGHH
HHGGGHH
2

Чтобы разнообразить игру «морской бой» Боря решил добавить в неё новый тип кораблей. Эти корабли состоят из двух прямоугольников. Первый прямоугольник имеет ширину w1 и высоту h1, а второй прямоугольник - w2 и h2 соответственно. Прямоугольники располагаются один над другим и выровнены по левому краю (см. рисунки примеров): введём на поле систему координат так, чтобы левая нижняя клеточка первого прямоугольника имела координаты (1,1). Тогда верхняя правая клеточка первого прямоугольника имеет координаты (w1,h1), левая нижняя клеточка второго прямоугольника имеет координаты (1,h1+1), а правая верхняя клеточка второго прямоугольника имеет координаты (w2,h1+h2).

По правилам морского боя, после уничтожения корабля необходимо отметить все клеточки, соседние по стороне или углу с клеточками, в которых есть корабль, потому что в этих клеточках уже не могут стоять другие корабли. При этом отмечаются только не принадлежащие кораблю клетки.

Определите, сколько клеток надо будет отметить после уничтожения корабля, придуманного Борей. Поле, на котором, происходит игра, бесконечно во все стороны.

 

Входные данные
В четырёх строках заданы четыре целых числа w1,h1,w2 и h2 (1<=w1,h1,w2,h2<=108) - ширина первого прямоугольника, высота первого прямоугольника, ширина второго прямоугольника и высота второго прямоугольника, соответственно.


Выходные данные
Выведите одно целое число — количество клеток, которые необходимо закрасить после уничтожения корабля.


Примечание

В первом примере поле выглядит так (красным обозначен первый прямоугольник, синим обозначен второй прямоугольник, зеленым обозначены отмеченные точки):

Во втором примере поле выглядит так:

 
Примеры
Входные данные Выходные данные
1 2
1
2
1
12
2 2
2
1
2
16
У Миши развитое эстетическое чувство. Он считает, что не все числа одинаково порядочные. Когда ему грустно, он начинает придумывать числа и приводить их в порядок.

Миша очень любит рассматривать сумму цифр числа. Для того чтобы привести в порядок число A, он сначала записывает само число. Потом он пишет сумму цифр этого числа. Затем — сумму цифр суммы цифр и так далее, до тех пор, пока очередное число не станет однозначным. Он считает, что результатом приведения в порядок числа A является сумма всех выписанных чисел, включая само число A.

Миша настолько любит этот процесс, что он даже заменяет ему счёт овец, когда долго не получается заснуть. Он помнит, что вчера ночью, когда он в уме привёл в порядок число A, у него получилось число B. Но вот беда — он не помнит, какое именно он взял число A! Помогите ему в отыскании этого числа.

Входные данные
На ввод подаётся единственное целое число B (1 ≤ B ≤ 109 )

Выходные данные
Если существует такое число A, что после приведения его в порядок, получается B, то выведите любое такое число. Если же Миша где-то ошибся в расчётах и такого числа не существует, то выведите -1.

 
Примеры
Входные данные Выходные данные
1 42 29
2 20 -1
В некотором мире сейчас 31 декабря и все веселье только начинается. Снежик Сугробович слепил N больших снежков и расположил их в ряд слева направо. На каждом i-м снежке, если считать слева (1 <= i <= N), он написал целое число ai. Он предлагает вам сыграть в игру. Снежик Сугробович разрешил сломать не более N − 1 снежков по вашему выбору. 

Допустим, осталось K снежков. Снежик Сугробович будет удовлетворен и подарит вам хороший подарок, если для каждого целого числа i (1<=i<=K) на i-м снежке, если считать слева оставшиеся снежки, будет написано целое число i.
Найдите минимальное количество снежков, которое вам нужно сломать, чтобы получить подарок. Если не получится, то выведите -1.

Входные данные
В первой строке программа получает на вход целое число N (1 <= N <= 200000). Во второй строке - N натуральных чисел ai (1<=ai<=N). 

Выходные данные
Выведите минимальное количество снежков, которые нужно сломать, чтобы получить подарок, или выведите -1, если это невозможно сделать.
 
Примеры
Входные данные Выходные данные Пояснение
1 3
2 1 2
1 Сломайте первый снежок, числа на остальных снежках будут удовлетворять условию Снежика Сугробовича
2 3
2 2 2
-1  
3 10
3 1 4 1 5 9 2 6 5 3
7  
4 1
1
0  
Поделиться
Класснуть