1. Главная
  2. Библиотека
  3. Экономика труда
  4. Денис ушел на каникулы и решил освежить в памяти собран...
Разбор задачи

Денис ушел на каникулы и решил освежить в памяти собрание «Искусство программирования» Дональда Кнута. Он хочет прочитать подряд как можно больше томов, начиная с первого, потом второй, третий и так далее. Всего на его полке N томов из «Искусства

  • Предмет: Экономика труда
  • Автор: Кэмп
  • #Теория игр и принятие финансовых решений
  • #Теория игр и стратегическое поведение
Денис ушел на каникулы и решил освежить в памяти собрание «Искусство программирования» Дональда Кнута. Он хочет прочитать подряд как можно больше томов, начиная с первого, потом второй, третий и так далее. Всего на его полке N томов из «Искусства

Условие:

Денис ушел на каникулы и решил освежить в памяти собрание «Искусство программирования» Дональда Кнута. Он хочет прочитать подряд как можно больше томов, начиная с первого, потом второй, третий и так далее.

Всего на его полке N томов из «Искусства программирования», но случилось так, что не все тома идут подряд — среди их номеров могут быть пропуски. Денис взялся за дело серьезно и поэтому хочет читать тома именно подряд, без пропусков.

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

Помогите Денису — определите, какое максимальное количество томов он сможет прочесть.

Формат входных данных

В первой строке дано число томов на книжной полке N (1 ≤ N ≤ 3 ⋅ 10^5).

Во второй строке дан список из N томов по их номерам. Номера томов — целые числа от 1 до 10^9, разделенные между собой пробелами.

Формат выходных данных

Выведите единственное число — какое максимальное количество томов Денис сможет прочесть.

Решение:

Пусть у Дениса есть N книг, но для чтения он хочет старшие тома 1, 2, 3, …, k без разрывов. Если том с каким‑либо номером отсутствует, его можно получить обменом: обмен требует отдать две книги, которые не нужны для чтения (то есть «лишние» книги). При этом если книга уже есть для нужного тома, её оставляем, а все дополнительные копии можно использовать для обмена.

Заметим следующее. Пусть для каждого i от 1 до k мы определим, есть ли на полке хотя бы одна копия тома i. Обозначим через c количество томов из диапазона 1…k, которые есть на полке (при этом даже если книга встречае...

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

Попробуй решить по шагам

Попробуй один шаг и продолжи в режиме обучения или посмотри готовое решение

Какое условие должно выполняться для максимального количества томов 'k', которые Денис сможет прочесть, учитывая 'N' общее количество книг и 'F(k)' количество уникальных томов с номерами от 1 до 'k', уже имеющихся на полке?

Что нужно знать по теме:

Что нужно знать по теме

Алгоритм решения

Топ 3 ошибок

Что спросит препод

Выбери предмет