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

Участ­ни­ки вик­то­ри­ны пись­мен­но от­ве­ча­ют на 10 во­про­сов раз­лич­ной слож­но­сти. За пра­виль­ный ответ на­чис­ля­ет­ся от 1 до 5 бал­лов в за­ви­си­мо­сти от слож­но­сти во­про­са. За не­вер­ный ответ вы­чи­та­ет­ся от 1 до 5 бал­лов. Участ­ник может не от­ве­чать на какой-то во­прос, в таком слу­чае баллы за этот во­прос не на­чис­ля­ют­ся.

По ре­зуль­та­там вик­то­ри­ны для каж­до­го участ­ни­ка вы­чис­ля­ют­ся три по­ка­за­те­ля:

1)  сумма  — общее ко­ли­че­ство на­бран­ных бал­лов;

2)  плюсы  — сумма бал­лов без учёта не­вер­ных от­ве­тов;

3)  от­ве­ты  — общее ко­ли­че­ство сдан­ных от­ве­тов (вер­ных и не­вер­ных).

В таб­ли­це ре­зуль­та­тов участ­ни­ки рас­по­ла­га­ют­ся по убы­ва­нию пер­во­го по­ка­за­те­ля  — суммы, при ра­вен­стве сумм  — по убы­ва­нию вто­ро­го по­ка­за­те­ля (плю­сов), при ра­вен­стве сумм и плю­сов  — по убы­ва­нию тре­тье­го по­ка­за­те­ля (от­ве­тов). При ра­вен­стве всех трёх по­ка­за­те­лей участ­ни­ки рас­по­ла­га­ют­ся в ито­го­вой таб­ли­це в по­ряд­ке воз­рас­та­ния их лич­ных но­ме­ров.

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

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

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

При­ме­ча­ние. Во всех слу­ча­ях, когда вы­чис­лен­ное ко­ли­че­ство участ­ни­ков ока­зы­ва­ет­ся не целым, учи­ты­ва­ет­ся целая часть по­лу­чен­но­го числа.

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

За­да­ние 26

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

Пер­вая стро­ка вход­но­го файла со­дер­жит целое число N (N ≤ 10 000)  — общее ко­ли­че­ство участ­ни­ков. Каж­дая из сле­ду­ю­щих N строк со­от­вет­ству­ет од­но­му участ­ни­ку и со­дер­жит 11 целых чисел, раз­делённых про­бе­ла­ми: сна­ча­ла ID участ­ни­ка, затем  — баллы, по­лу­чен­ные им за каж­дый из 10 во­про­сов.

Га­ран­ти­ру­ет­ся, что ID участ­ни­ков не по­вто­ря­ют­ся.

В от­ве­те за­пи­ши­те два целых числа: сна­ча­ла тре­бу­е­мый ID, затем тре­бу­е­мое ко­ли­че­ство.

 

Ответ:

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

Ре­ше­ние.

От­кро­ем файл с по­мо­щью ре­дак­то­ра элек­трон­ных таб­лиц.

В столб­це L по­счи­та­ем сумму балов введя фор­му­лу =СУММ(B1:K1) и ско­пи­ро­вав ее на весь диа­па­зон.

В столб­це М по­счи­та­ем сумму плю­сов введя фор­му­лу =СУМ­МЕС­ЛИ(B1:K1;">=0";B1:K1) и ско­пи­ро­вав на весь диа­па­зон.

В столб­це N по­счи­та­ем ко­ли­че­ство от­ве­тов введя фор­му­лу =СЧЁТЕСЛИ(B1:K1;"<>0") и ско­пи­ро­вав на весь диа­па­зон.

По­лу­чи таб­ли­цу:

От­сор­ти­ру­ем таб­ли­цу по усло­ви­ям за­да­чи:

Вы­де­лим участ­ни­ков, на­брав­ших по­ло­жи­тель­ную сумму бал­лов и ско­пи­ру­ем спи­сок на от­дель­ную таб­ли­цу. Всего участ­ни­ков 7145. Во вто­рой тур про­хо­дят участ­ни­ки из пер­вой трети таб­ли­цы. Всего в пер­вой трети 2381 участ­ник, плюс те, у кого ре­зуль­та­ты сов­па­да­ют с 2381 участ­ни­ком.

ID участ­ни­ка, за­ни­ма­ю­ще­го в таб­ли­це пер­вое место среди тех, кто прошёл в до­пол­ни­тель­ный от­бо­роч­ный тур - 35669.

Ско­пи­ру­ем участ­ни­ков (на­чи­ная с участ­ни­ка 35669), не про­шед­ших в сле­ду­ю­щий тур, на от­дель­ный лист.

Всего таких участ­ни­ков 4762, а 10% от этого ко­ли­че­ства 476 участ­ни­ков. А также 2 участ­ни­ка, с по­ка­за­те­ля­ми как у по­след­не­го по­пав­ше­го в от­бо­роч­ный тур.

Общее ко­ли­че­ство участ­ни­ков до­пол­ни­тель­но­го от­бо­роч­но­го тура 476 + 2 =478.

 

Ответ: 35669 и 478.

 

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

def fwd(scores,ndx):

s=scores[ndx][1:]

while s==scores[ndx][1:]: ndx+=1

return ndx

marks = sorted([list(map(int,s.split())) for s in open('26.txt')][1:])

scores = [[m[0],sum(m[1:]),sum([x for x in m[1:] if x > 0]), sum([x != 0 for x in m[1:]])] for m in marks]

scores = sorted([s for s in scores if s[1]>0],key=lambda x: x[1:],reverse=True)

t1=fwd(scores,len(scores)//3-1)

t2=fwd(scores,t1+(len(scores)-t1)//10)

print(scores[t1][0],t2-t1)