В английском клубе вечером собрались n его членов По традициям клуба каждый принес с собой сок того вида, который он предпочитает, в том количестве, которое он планирует выпить в течение вечера. Согласно правилам клуба, в любой момент любые три его члена могут присесть за столик и выпить сока (каждый — своего) в любом количестве, но обязательно все трое поровну. Докажите, что для того, чтобы все члены могли в течение вечера полностью выпить принесенный с собой сок, необходимо и достаточно, чтобы доля сока, принесенного любым членом клуба, не превосходила одной трети от общего количества.
Необходимость условия сразу следует из того, что доля выпитого любым членом клуба не превосходит одной трети от общего объема выпитого и, значит, одной трети от общего объема принесенного сока (общий объем выпитого равен утроенному объему выпитого этим членом клуба плюс объему выпитого тройками членов клуба, в которые он не входил).
Докажем достаточность.
Способ I. Проведем индукцию по числу членов клуба. Если то по условию задачи доля каждого из трех членов клуба равна одной трети от общего количества, и они смогут выпить весь свой сок, присев за столик один раз. База индукции установлена.
Перейдем к случаю Предположим, что максимальная доля сока была лишь у одного члена клуба. В этом случае за столик присаживаются член клуба с максимальной долей и два — с минимальной. Пока они пьют, доля каждого из них в общем объеме уменьшается, а доли всех оставшихся возрастают. Пусть они продолжают пить до тех пор, пока один из членов клуба с наименьшей долей не допьет все до конца (тогда оставшиеся члены клуба смогут допить весь свой сок в соответствии с предположением индукции), либо наибольшая из долей членов клуба, не сидящих за столиком, не сравняется с максимальной (принадлежащей одному из сидящих за столиком).
Таким образом, остается рассмотреть случай, когда не менее чем у двух членов клуба доля сока максимальна. Перейдем к рассмотрению этого случая.
Предположим, что доля максимальна ровно у двух членов клуба. Тогда за столик присаживаются эти два члена, а также третий, обладающий минимальной долей. Пусть они продолжают пить до тех пор, пока член клуба с минимальной долей не допьет весь свой сок до конца (тогда оставшиеся члены клуба смогут допить весь свой сок в соответствии с предположением индукции), либо наибольшая из долей членов клуба, не сидящих за столиком, не сравняется с максимальной (принадлежащей двоим из сидящих за столиком). Таким образом, остается рассмотреть случай, когда не менее чем у трех членов клуба доля сока максимальна.
Предположим, что доля максимальна у членов клуба. Опишем алгоритм, позволяющий всем членам клуба выпить весь принесенный сок. Пусть Δ — разница в объеме сока между максимальной и следующей по величине долями. Члены клуба с максимальной долей поочередно пьют в тройках «по кругу» (то есть сначала первый со вторым и третьим, затем второй с третьим и четвертым и т. д., a в конце
Способ II. Разобьем окружность единичной длины на n дуг, длины которых равны соответственно долям сока, принесенного каждым из n членов клуба. Расположим в круге
Поставим тройник в произвольное начальное положение, в котором все его концы показывают на внутренние точки дуг. За столик посадим членов клуба, соответствующих дугам. Будем вращать тройник по часовой стрелке и сопоставлять повороту выпивание каждым из членов клуба, сидящим за столиком, доли сока (относительно общего начально принесенного объема), равной длине дуги, вдоль которой прошел соответствующий конец тройника. В момент, когда хотя бы один из концов тройника проходит крайнюю точку дуги, будем проводить смену членов клуба, сидящих за столиком: столик будет покидать участник, из чьей дуги выходит конец тройника, а присаживаться участник, в дугу которого входит этот конец тройника.
Несложно видеть, что поворот тройника на 120° обеспечит способ выпивания членами клуба всего сока, который они принесли с собой.