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

Отдел мар­ке­тин­га сети ма­га­зи­нов со­став­ля­ет рей­тинг про­дук­тов по ин­фор­ма­ции об их сро­ках хра­не­ния с мо­мен­та из­го­тов­ле­ния и после вскры­тия упа­ков­ки. Для каж­до­го про­дук­та из­ве­стен срок его хра­не­ния с мо­мен­та из­го­тов­ле­ния и срок год­но­сти к упо­треб­ле­нию после вскры­тия упа­ков­ки. Про­дук­ты про­ну­ме­ро­ва­ны на­чи­ная с еди­ни­цы.

В рей­тин­го­вом спис­ке мар­ке­то­ло­ги рас­по­ла­га­ют про­дук­ты по сле­ду­ю­ще­му ал­го­рит­му:

—  все 2N чисел, обо­зна­ча­ю­щих срок хра­не­ния и срок год­но­сти к упо­треб­ле­нию для N про­дук­тов, упо­ря­до­чи­ва­ют по воз­рас­та­нию;

—  если ми­ни­маль­ное число в этом упо­ря­до­чен­ном спис­ке  — срок хра­не­ния, то про­дукт в рей­тин­ге за­ни­ма­ет пер­вое сво­бод­ное место от его на­ча­ла;

—  если ми­ни­маль­ное число  — срок год­но­сти к упо­треб­ле­нию, то про­дукт за­ни­ма­ет пер­вое сво­бод­ное место от конца рей­тин­га;

—  если число обо­зна­ча­ет срок хра­не­ния или срок год­но­сти к упо­треб­ле­нию уже рас­смот­рен­но­го про­дук­та, то его не при­ни­ма­ют во вни­ма­ние.

Этот ал­го­ритм при­ме­ня­ет­ся по­сле­до­ва­тель­но для раз­ме­ще­ния всех N про­дук­тов.

Опре­де­ли­те номер по­след­не­го про­дук­та, для ко­то­ро­го будет опре­де­ле­но его место в рей­тин­ге, и ко­ли­че­ство про­дук­тов, ко­то­рые зай­мут в рей­тин­ге более низ­кие места.

 

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

За­да­ние 26

В пер­вой стро­ке вход­но­го файла на­хо­дит­ся на­ту­раль­ное число N (N ≤ 1000)  — ко­ли­че­ство про­дук­тов. Сле­ду­ю­щие N строк со­дер­жат пары чисел, обо­зна­ча­ю­щих со­от­вет­ствен­но срок хра­не­ния про­дук­та с мо­мен­та

из­го­тов­ле­ния и срок год­но­сти к упо­треб­ле­нию после вскры­тия упа­ков­ки (все числа на­ту­раль­ные, раз­лич­ные).

За­пи­ши­те в от­ве­те два на­ту­раль­ных числа: сна­ча­ла номер по­след­не­го про­дук­та, для ко­то­ро­го будет опре­де­ле­но его место в рей­тин­ге, затем  — ко­ли­че­ство про­дук­тов, ко­то­рые зай­мут в рей­тин­ге более низ­кие места.

 

Ответ:

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

Ре­ше­ние.

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

f = open('DEMO_26.txt')

n = int(f.readline())

begin, end = [],[]

for i in range(n):

x = f.readline().split()

xran, godnost = int(x[0]), int(x[1])

if xran < godnost:

begin.append([xran,i])

else:

end.append([godnost,i])

print(max(end)[1] + 1, len(end) - 1)

# +1, тк в python ну­ме­ра­ция с 0.

# -1, так как надо убрать по­след­ний про­дукт, для ко­то­ро­го опре­де­ле­но его место в рей­тин­ге

 

Ответ: 564 444.

 

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

src=[list(map(int,s.split())) for s in open('DEMO_26.txt')][1:]

sroki=[(src[i][j],j,i+1) for i in range(len(src)) for j in range(2)]

sroki.sort(key=lambda x: x[0])

rat1,rat2=[],[]

already=set()

for x in sroki:

if x[2] not in already:

already.add(x[2])

last=x[2]

(rat1 if x[1]==0 else rat2).append(x[2])

rating=rat1+rat2[::-1]

print(last,len(rating)-rating.index(last)-1)

 

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

f = open('DEMO_26.txt')

num,globm,k=0,0,0 # номер то­ва­ра, гло­баль­ный мак­си­мум вре­ме­ни, ко­ли­че­ство то­ва­ров с кри­те­ри­ем «срок год­но­сти»

f.readline() # про­пус­ка­ем число строк

for s in f:

num+=1

h,g=map(int,s.split()) # срок хра­не­ния и срок год­но­сти

m=min(h,g)

in2=h > g # товар по­па­да­ет во вто­рую груп­пу (срок год­но­сти)

k+=in2 # ко­ли­че­ство то­ва­ров во вто­рой груп­пе

if m > globm: # новый мак­си­мум вре­ме­ни

globm=m

last=in2 # куда по­па­да­ет товар с мак­си­маль­ным вре­ме­нем

ans=num # номер этого то­ва­ра

print(ans,k-last)

 

 

#По­след­няя строч­ка тре­бу­ет по­яс­не­ний. Если товар с мак­си­маль­ным вре­ме­нем в пер­вой груп­пе, то за ним - вся вто­рая груп­па (k то­ва­ров).

#Если же этот товар - во вто­рой груп­пе, то он - пер­вый в этой груп­пе, и за ним сле­ду­ет k-1 товар.

#В про­грам­ме не­од­но­крат­но ис­поль­зу­ет­ся тот факт, что когда ло­ги­че­ские пе­ре­мен­ные ис­поль­зу­ют­ся в ариф­ме­ти­че­ских вы­ра­же­ни­ях,

#то False счи­та­ет­ся нулем, а True - еди­ни­цей.

 

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

with open('DEMO_26.txt') as f:

n = int(f.readline())

max_min, last_num, k = 0, 0, 0 # max min(h,g), номер по­след­не­го, число в груп­пе "godnost"

for i in range(1, n + 1):

h, g = map(int, f.readline().split())

curr_min = min(h, g)

in_godnost_group = (h > g)

k += in_godnost_group

if curr_min > max_min:

max_min = curr_min

last_num = i

is_last_in_godnost = in_godnost_group

print(last_num, k - is_last_in_godnost)

Источник: Де­мон­стра­ци­он­ная вер­сия ЕГЭ−2026 по ин­фор­ма­ти­ке