Для решения задачи нам нужно определить, сколько клеток на шахматной доске под боем слонов, стоящих в четырех углах. Слоны могут ходить по диагонали, и у нас есть четыре слона, стоящие в клетках (1,1), (1,m), (n,1), и (n,m).
Каждый слон может атаковать клетки по двум диагоналям:
- Диагональ, идущая слева сверху направо вниз (с увеличением и строки по мере увеличения столбца).
- Диагональ, идущая справа сверху налево вниз (с увеличением строки и уменьшением столбца).
Теперь давайте вычислим, сколько клеток зависит от позиции каждого слона:
Слон в (1,1):
Сначала диагональ вниз направо:
- Клетки на этой диагонали: (1,1), (2,2), (3,3), ..., (min(n,m), min(n,m)).
- Всего: min(n,m).
Затем диагональ вниз налево:
- На этой диагонали есть только клетка (1,1).
- Всего: 0 новых клеток.
Слон в (1,m):
Диагональ вниз налево:
- Клетки: (1,m), (2,m-1), (3,m-2), ..., (min(n,m), max(1,m-n+1)).
- Всего: min(n,m).
Диагональ вниз направо:
- На этой диагонали есть только клетка (1,m).
- Всего: 0 новых клеток.
Слон в (n,1):
Диагональ вниз направо:
- Клетки: (n,1), (n-1,2), (n-2,3), ..., (max(1,n-m+1), m).
- Всего: min(n,m).
Диагональ вниз налево:
- На этой диагонали есть только клетка (n,1).
- Всего: 0 новых клеток.
Слон в (n,m):
Диагональ вниз налево:
- Клетки: (n,m), (n-1,m-1), (n-2,m-2), ..., (max(1,n-m+1), 1).
- Всего: min(n,m).
Диагональ вниз направо:
- На этой диагонали есть только клетка (n,m).
- Всего: 0 новых клеток.
Теперь мы можем подсчитать количество клеток под боем:
- Слон (1,1): min(n,m) (клетки по первой диагонали)
- Слон (1,m): min(n,m) (клетки по второй диагонали)
- Слон (n,1): min(n,m) (клетки по третьей диагонали)
- Слон (n,m): min(n,m) (клетки по четвертой диагонали)
Итого:
def count_under_attack(n, m):
attack_cells = (min(n, m) - 1) + (min(n, m) - 1) + (min(n, m) - 1) + (min(n, m) - 1)
return attack_cells
# Чтение входных данных
n = int(input())
m = int(input())
# Вывод результата
print(count_under_attack(n, m))
Однако, на шахматной доске, как мы уже научились понимать, клетки, атакуемые слонами, не должны дублироваться. Поэтому мы просто берем количество уникальных клеток. Всего под боем окажется:
(2 * (n + m - 2))
Так как в каждом из направлений (вниз налево и вниз направо) каждая клетка атакуется только одним слоном.
Исходя из этого мы можем просто вывести результат.
Конечный вывод:
total_under_attack = (n - 1) + (m - 1)
print(total_under_attack)
Таким образом, применяя данную логику, мы можем правильно решить задачу за О(1) времени.
