Ctrl K

Расстановка против соперников

Средняя
Команды выставляют по n игроков на n парных встреч. Силы соперников известны заранее: theirs[i] — сила соперника в встрече номер i. Силы наших игроков — массив ours. Встречу выигрывает тот, чья сила **строго** больше. Тренер расставляет игроков по такому правилу, которое даёт наибольшее возможное число побед: 1. Наши игроки выходят по очереди от слабого к сильному. 2. Если текущий игрок сильнее **слабейшего** ещё не занятого соперника, он встаёт против него. 3. Иначе он всё равно проиграет — и его ставят против **сильнейшего** ещё не занятого соперника, чтобы не тратить на него сильных. Если несколько свободных соперников одинаково сильны, слабейшим считается тот, у кого меньше номер встречи, а сильнейшим — тот, у кого номер больше. Верните массив answer длины n, где answer[i] — сила нашего игрока, вышедшего против соперника i.
Пример 1
ours=[3, 9, 6], theirs=[5, 8, 2] → [6, 9, 3]

Идём по нашим от слабого к сильному. 3 побеждает слабейшего соперника 2 (позиция 2). 6 побеждает следующего слабейшего, 5 (позиция 0). 9 побеждает 8 (позиция 1). Итог [6, 9, 3] — три победы.

Пример 2
ours=[4, 4, 10], theirs=[4, 1, 7] → [10, 4, 4]

Первая 4 бьёт слабейшего соперника 1 (позиция 1). Вторая 4 не бьёт следующего слабейшего (4 против 4 — не победа), поэтому её ставят против сильнейшего свободного, 7 (позиция 2). 10 бьёт оставшегося 4 (позиция 0). Ответ [10, 4, 4], две победы.

Пример 3
ours=[1, 2], theirs=[5, 5] → [2, 1]

Выиграть нельзя ни одной встречи. 1 отправляется против сильнейшего; среди равных пятёрок сильнейшей считается стоящая на большей позиции, то есть 1. Затем 2 — против оставшейся позиции 0.

Ограничения
  • 1 ≤ len(ours) ≤ 10⁵
  • len(theirs) == len(ours)
  • 0 ≤ ours[i], theirs[i] ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСтудии для записи СредняяПерестроить середину шеренги СредняяТройки палочек для треугольника СредняяСамая выгодная подработка для каждого СредняяПлоты на двоих Средняя
загружаем Python…
Вход
ours=[3, 9, 6], theirs=[5, 8, 2]
Ожидается
[6, 9, 3]

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 102 теста на сервере, включая скрытые.