Есть готовый работающий код, но необходимо ускорить его выполнение. Код на python. Помогите, пожалуйста, это сделать?

Рейтинг: 0Ответов: 0Опубликовано: 26.01.2023

Есть такой написанный мною код на python. Никакие библиотеки кроме стандартных использовать нельзя. Работает он верно, часть тестов проходит, но заваливает тесты со слишком большими входными данными, превышая лимит времени. Помогите, пожалуйста, как можно ускорить его выполнение?

num_oder = int(input())
j = 0
list_result = []
order_list = []
while j < num_oder:
    line_order = input()
    line_order_list = line_order.split()
    order_list.append(line_order_list)
    j = j + 1
num_request = int(input())
k = 0
while k < num_request:
    cost_sum = 0
    duration_sum = 0
    line_request = input()
    line_request_list = line_request.split()
    start_req = int(line_request_list[0])
    end_req = int(line_request_list[1])
    type_req = int(line_request_list[2])
    if type_req == 1:
        for a in order_list:
            if start_req <= int(a[0]) <= end_req:
                cost_sum = cost_sum + int(a[2])
            else:
                cost_sum = cost_sum + 0
    else:
        for a in order_list:
            if start_req <= int(a[1]) <= end_req:
                duration = int(a[1]) - int(a[0])
                duration_sum = duration_sum + duration
            else:
                duration_sum = duration_sum + 0
    if type_req == 1:
        list_result.append(str(cost_sum))
    else:
        list_result.append(str(duration_sum))
    k = k + 1
print(" ".join(list_result))

На вход подается: число заказов, заказы (время начала в мин, время конца, стоимость), число запросов, запросы (время начала в мин, время конца, тип запроса). если тип запроса 1 - нужно найти стоимость заказов, которые начались в данный промежуток времени, если тип 2 - нужно найти продолжительность заказов, которые завершились в данный промежуток времени.
В выводе: значения в одну строку через пробел
Пример входных данных: 3
5 20 5
6 21 4
6 22 3 2 6 12 1 4 6 1

Пример выходных данных:
7 12

Ответы

Ответов пока нет.