Задача №1206. Газон
Разбор добавил Александр Чистяков
Разобьем постриженный участок газона на вертикальные полоски толщиной в 1 пучок, и для каждой такой полоски определим сколько пучков в ней оказалось полито. Пускай мы обрабатываем полоску с координатой x0 (x1 <= x0 <= x2): Прежде всего, если |x3 - x0| < r , то не полито ни одного пучка. Иначе, решая квадратное уравнение (x0 - x3)^2 + (y0 - y3)^2 = r3^2 относительно y0, получим "нижнюю" (Y1) и "верхнюю" (Y2) точку пересечения с прямой x = x0. Округлим до целого Y1 в большую сторону, а Y2 - в меньшую, чтобы они указывали на какой-то конкретный пучок. Тогда, если Y1 < y2 и Y2 > y1 в данной полоске будет полито ровно (min(Y2,y2) - max(Y1,y1) + 1) пучков, или 0 в противном случае. Сложность алгоритма составляет O(x2-x1).
Сдать: для сдачи задач необходимо войти в систему
statement