Потрібно перевірити для всіх умову .
Один з варіантів, що дає максимальну кількість будинків з хворими — це коли початкові будинків з хворими знаходяться поруч на одній діагоналі. Тоді відповідь буде рівна , але кількість будинків з хворими не може бути більшою за кількість будинків у місті. Отже, відповідь — min(, ).
Зеник може в кожному магазині купувати одноразову маску. У цьому разі він заплатить . Цей дивний запис означає суму за всіма від 1 до .
Якщо ж він вирішить придбати багаторазову маску в -ому магазині, то йому доведеться купити одноразові маски в усіх магазинах перед -им. Тоді він витратить . Можна перебрати — індекс магазину, де найвигідніше придбати багаторазову маску. Для цього будемо йти індексом від 1 до і підтримувати значення суми на префіксі.
Відповіддю буде найменший серед усіх цих варіантів.
Розглянемо граф, вершинами якого будуть люди, причому деякі пари з них будуть з’єднані ребрами, що означатиме дружбу між відповідними людьми.
Запустимо пошук у глибину (або в ширину) з кожної вершини, відповідна людина якої була хворою у початковий момент часу, та помічатимемо відвідані вершини. Важливо не відвідувати вершину 1, а також раніше оброблені вершини. Наприкінці множина помічених сусідів вершини 1 буде відповідати множині друзів, з якими варто обірвати всякі контакти на час пандемії (адже ці друзі можуть стати зараженими).
Складність такого розв’язку — лінійна відносно розміру вхідних даних.