Задание 27, задача 48

Задание 27, задача 48 (сайт К.Ю Полякова)
Данную задачу можно решить средствами электронных таблиц. Выгружаем пары чисел в столбцы А и B. В столбец С выносим максимальные числа из пары, в столбец D — модули разностей чисел из пары. Можно выполнить сортировку последнего столбца по возрастанию, расширив диапазон сортировки (при этом пара с минимальной разностью окажется в самом начале). Дальше считаем сумму максимальных чисел из пар (столбец С) и количество четных и нечетных. Видим, что сумма четная, а количество нечетных больше, чем четных. Поэтому нужно из этой суммы вычесть минимальную нечетную разность (это равносильно тому, что мы из суммы вычтем четное число и прибавим нечетное из пары с минимальной нечетной разностью).
Решение на языке Python полностью имитирует данный процесс:


Fin = open("27-48b.txt")
s_max=0
N = int( Fin.readline() )
count_ch=0
min_razn=999999999999
for i in range(N):
  ab = list(map( int, Fin.readline().split() ))
  s_max+=max(ab)
  if max(ab)%2==0: count_ch+=1
  if abs(ab[0]-ab[1])%2!=0:
      min_razn=min(min_razn, abs(ab[0]-ab[1]))



Fin.close()

print( s_max, count_ch, N-count_ch, min_razn)
print (s_max-min_razn)

Задание 27, задача 8

Задание 27, № 8 (с сайта К.Ю. Полякова)
Имеется набор данных, состоящий из положительных целых чисел, каждое из которых не превышает 1000. Они представляют собой результаты измерений, выполняемых прибором с интервалом 1 минута. Требуется найти для этой последовательности контрольное значение – наименьшую сумму квадратов двух результатов измерений, выполненных с интервалом не менее, чем в 5 минут.
Входные данные: Даны два входных файла: файл A (27-8a.txt) и файл B (27-8b.txt), каждый из которых содержит в первой строке количество чисел N (5 ≤ N ≤ 100000). Каждая из следующих N строк содержит одно натуральное число, не превышающее 1000.
Пример входного файла:
9
12
45
5
4
21
20
10
12
26
Для указанных данных искомое контрольное значение равно 169.
В ответе укажите два числа: сначала контрольное значение для файла А, затем для файла B.

Решение (Python) (данные вводятся копированием из файла в окно программы)

s=5
n=int(input())
queue = []
for i in range(s):
____queue.append( int(input()) )
min=1001
Res=2*1000**2+1
for i in range(n-s):
____a= queue.pop(0)
____if a<min: min=a
____x=int(input())
____queue.append(x)
____if x**2+min**2<Res: Res=x**2+min**2
print (Res)