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

Дана по­сле­до­ва­тель­ность целых чисел. Не­об­хо­ди­мо вы­брать из по­сле­до­ва­тель­но­сти три числа так, чтобы они об­ра­зо­ва­ли убы­ва­ю­щую по­сле­до­ва­тель­ность. Опре­де­ли­те мак­си­маль­но воз­мож­ную сумму вы­бран­ных чисел.

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

Файл А

Файл В

Пер­вая стро­ка вход­но­го файла со­дер­жит число N  — общее ко­ли­че­ство чисел в по­сле­до­ва­тель­но­сти. Каж­дая из сле­ду­ю­щих N строк со­дер­жит одно число, не пре­вы­ша­ю­щее 108.

При­мер.

Дан вход­ной файл:

4

5

3

6

2

Из этого файла надо вы­брать числа 5, 3 и 2, сумма ко­то­рых равна 10. Вы­брать числа 5, 3 и 6 нель­зя, так как они не об­ра­зу­ют убы­ва­ю­щую по­сле­до­ва­тель­ность.

Вам даны два вход­ных файла (A и B), каж­дый из ко­то­рых имеет опи­сан­ную выше струк­ту­ру. В от­ве­те ука­жи­те два числа: сна­ча­ла тре­бу­е­мую сумму для файла A, затем  — для файла B.

 

Ответ:

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

Ре­ше­ние.

При­ве­дем ре­ше­ние на языке Python для файла A.

f = open ('27-A.txt')

n = int(f.readline())

a = []

for x in range(n):

a.append(int(f.readline()))

maxi_summa = 0

for i in range (len(a)):

for j in range(i+1,len(a)):

for k in range(j+1,len(a)):

if a[i] > a[j] > a[k]:

maxi_summa=max(maxi_summa, a[i]+a[j]+a[k])

print(maxi_summa)

 

При­ве­дем ре­ше­ние на языке Python для фай­лов А и B.

f = open ('27-B.txt')

n = int(f.readline())

a = []

for x in range(n):

a.append([int(f.readline()),x]) # До­бав­ля­ем в мас­сив число и его ин­декс

a.sort()

a = a[n-10:] # Так как мас­сив от­сор­ти­ро­ван по воз­рас­та­нию, берем по­след­ние 10 зна­че­ний и ищем среди них 3 числа удо­вле­тво­ря­ю­щие усло­вию. Если среди 10 чисел не будет най­ден ответ, диа­па­зон можно уве­ли­чить

a.sort(key=lambda x: x[1]) #сор­ти­ру­ем мас­сив по ин­дек­сам

 

maxi_summa = 0

for i in range (len(a)):

for j in range(i+1,len(a)):

for k in range(j+1,len(a)):

if a[i][0] > a[j][0] > a[k][0]:

maxi_summa = max(maxi_summa, a[i][0] + a[j][0] + a[k][0])

print(maxi_summa)

 

Ответ: 119151&299996720.


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