Одна из классических задач в алгоритмах – подбор пар по рейтингам предпочтений. Она известна минимум в двух модификациях: когда пары несимметричны (например, первый элемент пары – дипломник, второй элемент пары – куратор) и когда пары симметричны (например, разбиваем отряд на боевые двойки).
Возьмём задачу, когда пары симметричны. Нам надо из 2n элементов составить n пар (ну пусть не бойцов в боевые двойки, пусть разработчиков в двойки парного программирования). Каждый из 2n разработчиков ранжирует для себя остальных 2n - 1 коллег по предпочтениям, с кем бы он хотел работать. И допустим (почему я перешёл от бойцов к разработчикам), что разбивка по парам идёт от эйчара как рекомендация, а не от топ-менеджера как предписание, т.е. при желании разработчики могут перераспределиться.
Что произойдёт, если в итоговой разбивке находятся двое разработчиков из разных пар, для каждого из которых личный рейтинг второго больше, чем того, с кем их поставили (ну то есть, Петю поставили с Васей, Колю