Больше видео на моем сайте https://xn--b1aga7bdp8a.xn--p1ai/
Хотите легко и просто понять информатику? Пишите мне в директ / kselt_
Больше видео по математике и информатике на моем канале https://www.youtube.com/channel/UCD7m...
Подписывайтесь, чтобы не пропустить новинки.
В некоторой стране построен радиотелескоп. Антенны телескопа расположены вдоль шоссе на равном расстоянии друг от друга. Каждая антенна в сутки принимает определённое количество сигналов. Компьютер антенны формирует из сигналов пакет данных и отправляет его в центр обработки. Количество сигналов в одном пакете не превышает 100. Центр обработки разместили рядом с одной из антенн так, чтобы количество энергии, расходуемой на передачу данных от всех антенн, было минимальным.
Количество энергии, необходимое для передачи всех пакетов с данными, равно произведению расстояния от антенны до центре обработки на количество передаваемых пакетов с данными. Определите номер антенны, рядом с которой следует разместить центр обработки данных.
Входные данные:
Даны два входных файла: файл A (27A.txt) и файл B (27B.txt), каждый из которых содержит в первой строке число: количество антенн N (1 ≤ N ≤ 10 000 000). Каждая из следующих N строк содержит два натуральных числа – номер антенны и количество сигналов, принятых антенной (количество принимаемых сигналов не превышает 1000). Антенны нумеруются в порядке их расположения вдоль шоссе, начиная с нулевой отметки.
В ответе укажите два числа: сначала искомый номер антенны для файла А, затем для файла B.
Пример входного файла:
6
1 100
3 250
8 7
10 4
15 1
31 160
Для данного примера ответ — 8. Для случая, когда центр обработки данных размещён около 8-й антенны, суммарную энергию, необходимую для передачи данных, можно оценить как 7·1 + 5·3 + 2·1 + 7·1 + 23·2 = 77.
import math
a=[[int(n) for n in x.split()] for x in open('27B_6638.txt')]
del(a[0])
for i in range(len(a)):
a[i][1]=math.ceil(a[i][1]/100)
s=0
l=a[0][1]
t=5 #для файла А равно 7 - номер первой станции
p=0
for i in range(1,len(a)):
s=s+(a[i][0]-t)*a[i][1]
p=p+a[i][1]
mi=ps=s
ls=q=0
for i in range(1,len(a)):
ls=ls+l*(a[i][0]-t)
ps=ps-p*(a[i][0]-t)
s=ls+ps
if mi больше s:
q=a[i][0]
mi=min(mi,s)
l=l+a[i][1]
p=p-a[i][1]
t=a[i][0]
print(q)