• Предмет: Информатика
  • Автор: shushablinchik
  • Вопрос задан 1 месяц назад

Помогите пожалуйста
Напишите код на Python
Лаборатория аномальных материалов изучает свойства анобтаниума. Из анобтаниума изготовлен штырь длины K см (K — целое). В торцах штыря и через каждый см. длины штыря размещены датчики температуры (всего K+1 датчик).

Эксперимент заключается в последовательности нагревов отрезков штыря [l; m], где l и m — целые числа, обозначающие сантиметры от начала штыря. В результате при каждом нагреве датчики температуры на интервале [l; m] фиксируют повышение температуры на v градусов. В лабораторном журнале фиксируются все нагревы штыря. Начальная температура всего штыря - 0.

Анобтаниум - уникальный материал с крайне малой теплопроводностью, то есть нагрев отрезка штыря никак не влияет на датчики температуры, не находящиеся на нагреваемом отрезке,

Напишите программу, которая по лабораторному журналу нагреваний штыря найдет сумму показаний температур для заданных отрезков штыря в заданные моменты времени.

Формат входных данных
На вход подается целое число K (1 ≤ K ≤ 107) — длина штыря. Затем подается целое число N (0 ≤ N ≤ 105) — количество записей в журнале экспериментов. Затем вводятся записи журнала экспериментов. Каждая запись представляет собой четыре целых числа (l, r, t, v), где l (0 ≤ l ≤ K) — левая граница нагреваемого отрезка, r (0 ≤ r ≤ K; l ≤ r) — правая граница нагреваемого отрезка, t (0 ≤ t ≤ 109) — момент времени от начала эксперимента, когда выполнялось нагревание, v (-109 ≤ v ≤ 109) — на сколько изменилась температура на отрезке.

К сожалению, записи в журнале перепутались, и они могут идти не в порядке неубывания времени. В один момент времени может выполняться несколько нагреваний, в том числе и на пересекающихся отрезках.

Далее идёт поток запросов о состоянии отрезка. Сначала подаётся целое число M (0 ≤ M ≤ 105), за которым следуют M запросов. Каждый запрос представляет собой три числа (l, r, t), где l (0 ≤ l ≤ K) — левая граница отрезка, r (0 ≤ r ≤ K; l ≤ r) — правая граница отрезка, t (0 ≤ t ≤ 109) — момент времени.

Формат результата
Для каждого запроса выведите сумму температур всех датчиков на заданном отрезке в заданный момент времени. Если в указанный момент времени выполнялись нагревания отрезка, то суммирование производится после нагревания (то есть с новыми значениями датчиков температур).

Ответы

Ответ дал: da4bt1488228
0

Ответ:

def process_experiments(K, N, experiments, M, queries):

temperatures = [0] * (K + 1)

for experiment in sorted(experiments, key=lambda x: x[2]):

l, r, t, v = experiment

for i in range(l, r + 1):

temperatures[i] += v

cumulative_temps = [0] * (K + 1)

cumulative_temp = 0

for i in range(K + 1):

cumulative_temp += temperatures[i]

cumulative_temps[i] = cumulative_temp

for query in queries:

l, r, t = query

result = cumulative_temps[r] - cumulative_temps[l - 1]

print(result)

# Ввод данных

K = int(input())

N = int(input())

experiments = [list(map(int, input().split())) for _ in range(N)]

M = int(input())

queries = [list(map(int, input().split())) for _ in range(M)]

# Обработка и вывод результата

process_experiments(K, N, experiments, M, queries)

Вас заинтересует