Точки маршруту
| # | x | y | 0<x<5000 | 0<y<5000 | inside? |
|---|
Поточна точка
?
з points
Квадрат
?
0 < x < 5000 і 0 < y < 5000
Лічильник
inside = 0
скільки точок зараховано
Пара точок
?
p1 і p2 з подвійного циклу
Суми координат
sx=?, sy=?
перевіряємо парність
Середина
?
middle in point_set?
points вже побудовано: кожна точка - це нове (x, y) після руху дрона.
Поточна перевірка середини
p1
?
middle
?
p2
?
квадрат 0..5000
поточна точка
p1 / p2
середина знайдена в points
Що тут важливо
Строго всередині означає не на межі. Якщо
x = 0, x = 5000, y = 0 або y = 5000, точка не рахується.Середина двох точок має координати
((x1+x2)/2, (y1+y2)/2). Тому скрипт спочатку дивиться, чи суми парні.point_set потрібен, щоб швидко питати: "а така точка взагалі була у маршруті?" Без set довелося б щоразу перебирати весь список.