В отель ночью приехали
(Фёдор Ивлев)
Пусть или
Алгоритм. Мысленно разделим номера на 100 участков по номеров, а в случае нечётного k оставшийся номер объявим запасным. Пусть i-й турист сначала проверяет все номера i-го участка, двигаясь слева направо, потом идёт в запасной номер (если тот есть), а потом проверяет номера
Оценка. Для того чтобы каждый
Рассмотрим для каждого туриста первые номеров из его списка. Все эти чисел различны, иначе два туриста с совпавшим числом могут оба попасть в этот номер (если их предыдущие номера, которых суммарно не больше все на ремонте). Следовательно,
При чётном k этой оценки достаточно. В случае нечётного k, если у какого-то туриста, скажем, Пети, -й номер совпадает с каким-то из «первых» номеров, скажем, с Васиным, то когда у Пети первые номеров будут на ремонте, а у Васи — все номера до совпадающего с Петиным (их не более будут на ремонте, они попадут в один номер. Значит, все -е номера отличны от первых (хотя могут совпадать друг с другом), то есть
Замечание. Для чётного числа туристов (а их у нас 100), алгоритм можно описать несколько иначе.
При чётном k мысленно представим план отеля как 50 коридоров, в каждом из которых вдоль одной стены расположены двери номеров. Каждой паре туристов «отдадим» один коридор по которому они двигаются с противоположных концов, проверяя все встреченные комнаты. В сумме эта пара может обнаружить не более k ремонтирующихся номеров, поэтому два свободных номера для них останутся.
При нечётном k представим коридоры отеля как большие диагонали правильного 100-угольника: на каждой диагонали по номера, причём один номер общий для всех коридоров (на рисунке изображена аналогичная конструкция
Ответ: при и при