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

При он­лайн-⁠по­куп­ке би­ле­та на кон­церт из­вест­но, какие места в зале уже за­ня­ты. Не­об­хо­ди­мо ку­пить два би­ле­та на такие со­сед­ние места в одном ряду, чтобы перед ними все крес­ла с та­ки­ми же но­ме­ра­ми были сво­бод­ны, а ряд на­хо­дил­ся как можно даль­ше от сцены. Если в этом ряду таких пар мест не­сколь­ко, най­ди­те пару с наи­боль­ши­ми но­ме­ра­ми. В от­ве­те за­пи­ши­те два целых числа: ис­ко­мый номер ряда и наи­боль­ший номер места в най­ден­ной паре. Ну­ме­ра­ция рядов и мест ведётся с 1. Га­ран­ти­ру­ет­ся, что хотя бы одна такая пара в зале есть.

За­да­ние 26

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

В пер­вой стро­ке вход­но­го файла на­хо­дят­ся три числа: N  — ко­ли­че­ство за­ня­тых мест в зале (целое по­ло­жи­тель­ное число, не пре­вы­ша­ю­щее 10 000), М  — ко­ли­че­ство рядов (целое по­ло­жи­тель­ное число, не пре­вы­ша­ю­щее 100 000) и К   — ко­ли­че­ство мест в каж­дом ряду (целое по­ло­жи­тель­ное число, не пре­вы­ша­ю­щее 100 000). В сле­ду­ю­щих N стро­ках на­хо­дят­ся пары на­ту­раль­ных чисел: номер ряда и номер места за­ня­то­го крес­ла со­от­вет­ствен­но (пер­вое число не пре­вы­ша­ет зна­че­ния М, а вто­рое  — K).

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

Два целых по­ло­жи­тель­ных числа: наи­боль­ший номер ряда и наи­боль­ший номер места в най­ден­ной паре кре­сел.

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

7 7 8

1 1

6 6

5 5

6 7

4 4

2 2

3 3

При таких ис­ход­ных дан­ных от­ве­том яв­ля­ет­ся пара чисел 5 и 8. Усло­вию за­да­чи удо­вле­тво­ря­ют места 7 и 8 в ряду 5: перед крес­ла­ми 7 и 8 нет за­ня­тых мест и это по­след­няя из двух воз­мож­ных пар в этом ряду. В рядах 6 и 7 ис­ко­мую пару найти нель­зя.

 

Ответ:

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

Ре­ше­ние.

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

f = open('69934.txt')

N, M, K = [int(x) for x in f.readline().split()]

mini = [M+1]*(K+1)

for i in range(N):

rad, mesto = [int(x) for x in f.readline().split()]

mini[mesto] = min(mini[mesto], rad)

Nrad = 0

Nmesto = []

for i in range(1, K):

Nrad = max(Nrad, min(mini[i]-1, mini[i+1]-1))

if min(mini[i]-1, mini[i+1]-1) == Nrad:

Nmesto.append(i+1)

print(Nrad, max(Nmesto))

 

Ответ: 99999  4989.

 

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

f = open('69934.txt')

n,m,k = map(int, f.readline().split())

sbr = [m+1]*k

for s in f:

r,p = map(int, s.split())

sbr[p-1] = min(sbr[p-1], r)

pairs = [min(sbr[i-1], sbr[i]) for i in range(1, len(sbr))]

mr = max(pairs)

print(mr - 1, max(i for i in range(len(pairs)) if pairs[i] == mr) + 2)

Источник: ЕГЭ—2024. Ос­нов­ная волна 08.06.2024. Даль­ний Во­сток