Потрібно перевірити для всіх i умову xi+1−xi≥2.
Один з варіантів, що дає максимальну кількість будинків з хворими — це коли початкові k будинків з хворими знаходяться поруч на одній діагоналі. Тоді відповідь буде рівна k2, але кількість будинків з хворими не може бути більшою за кількість будинків у місті. Отже, відповідь — min(k2, n2).
Зеник може в кожному магазині купувати одноразову маску. У цьому разі він заплатить ∑ni=1ai. Цей дивний запис означає суму ai за всіма i від 1 до n.
Якщо ж він вирішить придбати багаторазову маску в j-ому магазині, то йому доведеться купити одноразові маски в усіх магазинах перед j-им. Тоді він витратить bj+∑j−1i=1ai. Можна перебрати j — індекс магазину, де найвигідніше придбати багаторазову маску. Для цього будемо йти індексом j від 1 до n і підтримувати значення суми ai на префіксі.
Відповіддю буде найменший серед усіх цих варіантів.
Розглянемо граф, вершинами якого будуть люди, причому деякі пари з них будуть з’єднані ребрами, що означатиме дружбу між відповідними людьми.
Запустимо пошук у глибину (або в ширину) з кожної вершини, відповідна людина якої була хворою у початковий момент часу, та помічатимемо відвідані вершини. Важливо не відвідувати вершину 1, а також раніше оброблені вершини. Наприкінці множина помічених сусідів вершини 1 буде відповідати множині друзів, з якими варто обірвати всякі контакти на час пандемії (адже ці друзі можуть стати зараженими).
Складність такого розв’язку — лінійна відносно розміру вхідних даних.