1. Главная
  2. Библиотека
  3. Информационные технологии
  4. Каждый человек характеризуется числами aᵢ — важностью е...
Разбор задачи

Каждый человек характеризуется числами aᵢ — важностью его дел (чем это число больше, тем важнее его дело), и числом cᵢ — характеристика его совести. Числа aᵢ образуют перестановку чисел от 1 до n. Пусть на данный момент очередь состоит из n-1 людей.

  • Предмет: Информационные технологии
  • Автор: Кэмп
  • #Программирование (языки C++, Java, Python и др.)
  • #Алгоритмы и структуры данных
Каждый человек характеризуется числами aᵢ — важностью его дел (чем это число больше, тем важнее его дело), и числом cᵢ — характеристика его совести. Числа aᵢ образуют перестановку чисел от 1 до n. Пусть на данный момент очередь состоит из n-1 людей.

Условие:

Каждый человек характеризуется числами aᵢ — важностью его дел (чем это число больше, тем важнее его дело), и числом cᵢ — характеристика его совести. Числа aᵢ образуют перестановку чисел от 1 до n.
Пусть на данный момент очередь состоит из n-1 людей. Рассмотрим, как ведет себя пришедший номер n. Первым делом он встает в конец текущей очереди, а дальше поступает следующим образом: если у человека, который стоит перед ним важность дел aᵢ меньше чем aₙ, то они меняются местами (выглядит это так: человек номер n спрашивает у предыдущего: «Эээ... простите, пожалуйста, у меня очень важное дело... можете меня пропустить вперед?»), затем он опять спрашивает у впереди стоящего человека, и так далее. Если же aᵢ больше чем aₙ, то продвижение вперед заканчивается. Но такую операцию обмена человек номер n может совершить не более, чем cₙ раз.
В нашей задаче будем считать, что к моменту, когда человек номер n придет в очередь, процесс обменов в очереди из n-1 людей уже закончится. Если обмен возможен, то он обязательно происходит.
Ваша задача — помочь Васе промоделировать описанный процесс и найти, в каком порядке пришедшие люди будут располагаться в очереди после окончания всех обменов.

Формат ввода

В первой строке входных данных находится целое число n — количество людей, пришедших в данную очередь (1 ≤ n ≤ 10⁵). Далее в n строках заданы описания людей в порядке их прихода — целые числа aᵢ и cᵢ (1 ≤ aᵢ ≤ n, 0 ≤ cᵢ ≤ n), записанные через пробел. Каждое описание находится на отдельной строке. Все aᵢ различны.

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

Выведите перестановку чисел от 1 до n, означающую образованную по описанным правилам очередь в порядке от начала к концу. В этой последовательности i-ое число означает номер человека, который будет стоять в очереди на месте номер i после завершения процесса обменов. Люди нумеруются с 1 в порядке, в котором они заданы во входных данных. Числа разделяйте пробелом.

Пример 1

Ввод Вывод
2
1 0
2 1
2 1

Пример 2

Ввод Вывод
3
1 3
2 3
3 3
3 2 1

Пример 3

Ввод Вывод
5
2 3
1 4
4 3
3 1
5 2
3 1 5 4 2

Решение:

Для решения задачи, давайте разберем процесс по шагам.

Шаг 1: Понимание входных данных

У нас есть n людей, каждый из которых имеет:

  • ai — важность дел (перестановка от 1 до n)
  • ci — количество раз, которое человек может обменяться местами с человеком перед ним.

Шаг 2: Структура данных

Мы будем использовать список для хранения информации о каждом человеке в очереди. Каждый человек будет представлен как кортеж (ai, ci, индекс), где индекс — это номер человека в исходном порядке.

Шаг 3: Инициализация очереди...

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

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

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

Какой из следующих подходов наиболее эффективно моделирует процесс продвижения последнего пришедшего человека в очереди, учитывая его важность и ограничение на количество обменов?

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

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

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

Топ 3 ошибок

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

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