Задания
Версия для печати и копирования в MS Word
Тип 27 № 59854
i

По ка­на­лу связи пе­ре­даётся по­сле­до­ва­тель­ность целых не­от­ри­ца­тель­ных чисел  — по­ка­за­ния при­бо­ра, по­лу­чен­ные с ин­тер­ва­лом в 1 мин. в те­че­ние T мин. (T  — целое число). При­бор из­ме­ря­ет ко­ли­че­ство ат­мо­сфер­ных осад­ков, по­лу­чен­ное ре­ги­стра­то­ром за ми­ну­ту, пред­ше­ству­ю­щую мо­мен­ту ре­ги­стра­ции, и пе­ре­даёт это зна­че­ние в услов­ных еди­ни­цах из­ме­ре­ния. Опре­де­ли­те два таких пе­ре­дан­ных числа, чтобы между мо­мен­та­ми их пе­ре­да­чи про­шло не менее K мин., а их сумма была мак­си­маль­но воз­мож­ной. Ука­жи­те най­ден­ное сум­мар­ное ко­ли­че­ство осад­ков.

Файл А

Файл В

Вход­ные дан­ные.

Даны два вход­ных файла (файл A и файл B), каж­дый из ко­то­рых в пер­вой стро­ке со­дер­жит на­ту­раль­ное число K  — ко­ли­че­ство минут, ко­то­рое долж­но прой­ти между двумя пе­ре­да­ча­ми по­ка­за­ний, а во вто­рой  — ко­ли­че­ство пе­ре­дан­ных по­ка­за­ний N (1 ≤ N ≤ 10 000 000, N > K). В каж­дой из сле­ду­ю­щих N строк на­хо­дит­ся одно целое не­от­ри­ца­тель­ное число, не пре­вы­ша­ю­щее 10 000 000, обо­зна­ча­ю­щее ко­ли­че­ство осад­ков за со­от­вет­ству­ю­щую ми­ну­ту.

Вы­ход­ные дан­ные.

За­пи­ши­те в от­ве­те два числа: сна­ча­ла зна­че­ние ис­ко­мой ве­ли­чи­ны для файла A, затем  — для файла B.

Ти­по­вой при­мер ор­га­ни­за­ции дан­ных во вход­ном файле:

3

5

15

10

200

0

30

При таких ис­ход­ных дан­ных мак­си­маль­но воз­мож­ное сум­мар­ное ко­ли­че­ство осад­ков равно 45  — это сумма осад­ков, вы­пав­ших на пер­вой и пятой ми­ну­тах.

Ти­по­вой при­мер имеет ил­лю­стра­тив­ный ха­рак­тер. Для вы­пол­не­ния за­да­ния ис­поль­зуй­те дан­ные из при­ла­га­е­мых фай­лов.

 

Ответ:

Спрятать решение

Ре­ше­ние.

По­сле­до­ва­тель­но будем про­ве­рять пе­ре­дан­ные числа, чтобы между мо­мен­та­ми их пе­ре­да­чи про­шло не менее K мин., а их сумма была мак­си­маль­но воз­мож­ной.

 

При­ведём ре­ше­ние на языке Python.

f = open('27.txt')

k = int(f.readline())

n = int(f.readline())

a = [int(x) for x in f]

summa = 0

maxi = 0

for i in range(n):

maxi = max(maxi, a[i])

if i + k < len(a):

summa = max(summa, maxi+a[i+k])

print(summa)

 

В ре­зуль­та­те ра­бо­ты дан­но­го ал­го­рит­ма при вводе дан­ных из файла A ответ  — 1993, из файла B  — 9999996.

 

Ответ: 1993  9999996.

 

При­ме­ча­ние.

Путь к файлу не­об­хо­ди­мо ука­зать со­глас­но рас­по­ло­же­нию файла на Вашем ком­пью­те­ре.

 

 

При­ведём ре­ше­ние Юрия Кра­силь­ни­ко­ва на языке Python.

a = [int(s) for s in open('27B_59854.txt')]

k,m,r = a[0],0,0

a = a[2:]

for i in range(k,len(a)):

m = max(m,a[i-k])

r = max(r,m+a[i])

print(r)


Аналоги к заданию № 59854: 60269 Все

Источник: ЕГЭ по ин­фор­ма­ти­ке 20.06.2023. Ос­нов­ная волна. Даль­ний Во­сток