Top.Mail.Ru

Решение задачи можно разделить на несколько шагов:

1. Создание и заполнение матрицы участка с учетом деревьев.

2. Проверка каждой клетки матрицы на возможность постройки здания.

3. Подсчет количества свободных клеток для постройки здания.

4. Вывод результата.

Реализация на языке Python:

“`python
def building_area(n, m, trees, a, b):
# 1. Создание и заполнение матрицы участка с учетом деревьев
area = [[0] * m for _ in range(n)] # Создаем матрицу размером n x m и заполняем ее нулями

for tree in trees: # Помечаем клетки с деревьями значением 1
x, y = tree
area[x][y] = 1

# 2. Проверка каждой клетки матрицы на возможность постройки здания
count = 0 # Счетчик свободных клеток под строительство

for i in range(n – a + 1): # Проходим по всем возможным верхним левым клеткам участка для постройки
for j in range(m – b + 1):
if all(area[i+x][j+y] == 0 for x in range(a) for y in range(b)):
# Проверяем каждую клетку внутри участка на свободность
count += 1

# 3. Подсчет количества свободных клеток для постройки здания
return count

# 4. Вывод результата
n, m = map(int, input().split()) # Вводим размеры участка
trees = []
for _ in range(int(input())): # Вводим координаты деревьев
trees.append(tuple(map(int, input().split())))
a, b = map(int, input().split()) # Вводим размеры здания

result = building_area(n, m, trees, a, b)
print(result)
“`

Данное решение основано на переборе всех возможных верхних левых клеток участка для постройки и проверке каждой клетки внутри этого участка. Если все клетки внутри участка свободны, то счетчик увеличивается на 1. В конце выводится результа

   
[metform form_id="1136"]