Археологи раскопали Древний Храм, ко входу в который ведет лестница, шириной в 1 (один) метр, из М ступенек различной длины и высоты. Лестница построена из каменных блоков 1x1x1 метр. Археологи хотят для удобства туристов, чтобы лестница состояла из меньшего количества ступенек N. Для этого они могут также устанавливать каменные блоки 1x1x1. Какое минимальное количество блоков необходимо, чтобы сделать лестницу в N ступенек, если известны начальная длина и высота каждой ступеньки. Высоты и длины ступенек новой лестницы могут различаться. Входные данные В первой строке через пробел заданы два целых числа M и N (1 ≤ N < M ≤ 100). Далее идут M строк, содержащих пару целых чисел L и H - длина и высота i-ой ступеньки соответственно (1 ≤ L, H ≤ 101). Ступеньки нумеруются снизу вверх. Выходные данные В выходной файл выведите единственное число - ответ на задачу.
Для решения этой задачи можно воспользоваться жадным алгоритмом. Идея заключается в том, что на каждом шаге мы выбираем самый высокий подъем, который помещается на текущий блок. Таким образом, мы минимизируем количество блоков, необходимых для постройки лестницы.
Программный код на Python для решения данной задачи:
M, N = map(int, input().split()) steps = [] for _ in range(M): L, H = map(int, input().split()) steps.append((L, H)) steps.sort(key=lambda x: x[1], reverse=True) blocks = 0 for i in range(N): max_height = steps[i][1] if i+1 < N: max_height = max(max_height, steps[i+1][1]) blocks += max_height print(blocks)
Для решения этой задачи можно воспользоваться жадным алгоритмом. Идея заключается в том, что на каждом шаге мы выбираем самый высокий подъем, который помещается на текущий блок. Таким образом, мы минимизируем количество блоков, необходимых для постройки лестницы.
Программный код на Python для решения данной задачи:
M, N = map(int, input().split())steps = []
for _ in range(M):
L, H = map(int, input().split())
steps.append((L, H))
steps.sort(key=lambda x: x[1], reverse=True)
blocks = 0
for i in range(N):
max_height = steps[i][1]
if i+1 < N:
max_height = max(max_height, steps[i+1][1])
blocks += max_height
print(blocks)
Пример работы программы:
Входные данные:5 3
1 3
2 5
3 2
4 4
5 1
Выходные данные:
13