видимо это будет выглядеть такУ каждого направления есть ранжированные списки.Они провели линию в этих списках по количеству мест. Например, 100 мест, провели линию после 100 абитуриента.В эти 100 попали абитуриенты как с первым приоритетом - и  с ними все понятно, их будут зачислять. Так и с вторым-третьим-четвертым приоритетами.С ними надо разбираться.По всем этим ребятам надо узнать, где находится их более высокие приоритеты.   Например, есть Иванов, у которого на данном направлении приоритет 3.  Надо сделать запросы туда, где его приоритеты 1 и 2. Попал ли он хоть где-нибудь там в проходной список. Если попал, значит до приоритета 3 он уже точно не долетит, и его можно вычеркивать.Вычеркнули всех таких.   Их, например, получилось 20 человек.  100 превратилось в 80. Переместили линию отсечки на новый уровень списка, на 120го абитуриента. Чтобы выше линии отсечки было снова 100 человек.И эту операцию проделали на всех направлениях данного вуза одновременно.Дальше у всех новые списки. И они снова берут всех, кто в их списках выше линии относится не к первому приоритету, и отправляют запросы  туда, где у этих ребят более высокий приоритет - "а теперь, они к вам попали?".И снова всех, кто попал в поступивших по более высокому приоритету, вычеркивают из своего спискаИ снова перемещают линию.И так до тех пор, пока на всех направлениях не получат информации, что вычеркивать больше некого и передвигать линию больше некуда.И после этого процесс останавливается.На самом деле он недолгий, особенно если  все держатели списков по каждому направлению соберутся за одним большим столом и станут оперативно сообщать друг другу информацию. Часа за 2-3 разобраться можно.