Тренировки по алгоритмам 2.0. Разбор домашнего задания по лекциям 5 и 6, дивизион B

preview_player
Показать описание
В разборе будут показаны решения задач по темам «Префиксные суммы и два указателя» и «Бинарный поиск». Уровень сложности — базовый.

Лекции по этим темам:

Домашние задания из разбора:

Рекомендации по теме
Комментарии
Автор

Занятие 5. C. Каждому по компьютеру - 0:20
Занятие 5. E. Сумма трёх - 24:10
Занятие 6. D. Вырубка леса - 42:08
Занятие 6. E. Покрытие K отрезками - 52:11

justnik
Автор

А как математически решить задачу про лесорубов?

alexanderantropov
Автор

E. Сумма трёх
Вот мой код:
def slovik(lst: list) -> dict:
sort_dict = {}
for index, value in enumerate(lst):
sort_dict[int(value)] = sort_dict.setdefault(int(value), index)
return sort_dict

S = int(input())
A = slovik(input().split()[1:])
B = slovik(input().split()[1:])
C = slovik(input().split()[1:])
c = {i for i in C if i<=S}

break_ = False

for key_A in A:
if key_A > S:
continue
for key_B in B:
if key_A+key_B > S:
continue
if (S - key_A - key_B) in c:
print(A[key_A], B[key_B], C[S - key_A - key_B])
break_ = True
break
if break_:
break
else:
print("-1")
Выжал всё что мог, не входит по времени, помогите люди добрые, что можно поправить!)

cpeoqjp