Ход короля
Вы решили задачу. Теперь можно сравнить подходы.
Король меняет каждую координату не более чем на единицу.
Авторский разбор для локальной версии на основе условия задачи. Это не выгрузка чужих посылок и не официальное решение исходного сайта.
Ваше принятое решение
Рекомендуемое решение: Максимум модулей разностей
Максимум равен 1 ровно для восьми соседних клеток; совпадающие клетки исключены.
x1 = int(input())
y1 = int(input())
x2 = int(input())
y2 = int(input())
print('YES' if max(abs(x1 - x2), abs(y1 - y2)) == 1 else 'NO')
Время: O(1). Память: O(1).
Другой способ: Проверка восьми направлений
Явно создаём восемь разрешённых векторов хода и проверяем перемещение по множеству.
x1 = int(input())
y1 = int(input())
x2 = int(input())
y2 = int(input())
directions = {(dx, dy) for dx in (-1, 0, 1) for dy in (-1, 0, 1) if dx != 0 or dy != 0}
print('YES' if (x2 - x1, y2 - y1) in directions else 'NO')
Время: O(1). Память: O(1), восемь направлений.
На что обратить внимание
- Диагональный ход разрешён.
- Нельзя проверять только сумму расстояний: диагональ меняет две координаты.
Рекомендация учитывает сложность и читаемость для этой задачи. Единственного самого быстрого решения для всех размеров входа и всех компьютеров может не быть.