Задания
Версия для печати и копирования в MS Word
Тип Д19 C4 № 7385
i

Ре­ги­о­наль­ный этап олим­пи­а­ды по ин­фор­ма­ти­ке про­во­дил­ся для уче­ни­ков 9–11-х клас­сов. Все уче­ни­ки участ­во­ва­ли в общем кон­кур­се. Каж­дый участ­ник олим­пи­а­ды мог на­брать от 0 до 600 бал­лов. По по­ло­же­нию об олим­пиа­де по­бе­ди­те­ли опре­де­ля­ют­ся сле­ду­ю­щим об­ра­зом.

1.  Опре­де­ля­ют­ся все участ­ни­ки, на­брав­шие наи­боль­шее среди всех участ­ни­ков ко­ли­че­ство бал­лов. Они объ­яв­ля­ют­ся кан­ди­да­та­ми в по­бе­ди­те­ли.

2.  Если число кан­ди­да­тов со­став­ля­ет не более 25% всех участ­ни­ков олим­пи­а­ды, все кан­ди­да­ты счи­та­ют­ся по­бе­ди­те­ля­ми.

3.  Если кан­ди­да­тов в по­бе­ди­те­ли более 25%, то рас­смат­ри­ва­ет­ся ко­ли­че­ство бал­лов, на­бран­ное кан­ди­да­та­ми в по­бе­ди­те­ли. Если кан­ди­да­ты на­бра­ли более 300 бал­лов, все они объ­яв­ля­ют­ся по­бе­ди­те­ля­ми. Если балл, на­бран­ный кан­ди­да­та­ми, не пре­вы­ша­ет 300 бал­лов, по­бе­ди­те­лем не приз­наётся никто.

На­пи­ши­те эф­фек­тив­ную по вре­ме­ни ра­бо­ты и по ис­поль­зу­е­мой па­мя­ти про­грам­му (ука­жи­те ис­поль­зу­е­мую вер­сию языка про­грам­ми­ро­ва­ния, на­при­мер Borland Pascal 7.0), ко­то­рая будет опре­де­лять фа­ми­лию и имя луч­ше­го участ­ни­ка, не став­ше­го по­бе­ди­те­лем олим­пи­а­ды. Если сле­ду­ю­щий за бал­лом по­бе­ди­те­лей один и тот же балл на­бра­ли не­сколь­ко че­ло­век или если по­бе­ди­те­лей нет, а луч­ших участ­ни­ков не­сколь­ко (в этом слу­чае они же яв­ля­ют­ся ис­ко­мы­ми), то выдаётся толь­ко число ис­ко­мых участ­ни­ков. Га­ран­ти­ру­ет­ся, что ис­ко­мые участ­ни­ки (участ­ник) име­ют­ся.

На вход про­грам­ме сна­ча­ла подаётся число участ­ни­ков олим­пи­а­ды N

(N<10000).

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

 

<Фа­ми­лия> <Имя> <класс> <баллы>,

 

где <Фа­ми­лия>  — стро­ка, со­сто­я­щая не более чем из 20 не­про­бель­ных сим­во­лов; <Имя>  — стро­ка, со­сто­я­щая не более чем из 15 не­про­бель­ных сим­во­лов; <класс>  — число от 9 до 11; <баллы>  — целое число от 0 до 600 на­бран­ных участ­ни­ком бал­лов. <Фа­ми­лия> и <Имя>, <Имя> и <класс>, а также <класс> и <баллы> раз­де­ле­ны одним про­бе­лом.

При­мер вход­ной стро­ки:

Ива­нов Пётр 10 275

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

Куз­не­цов Иван

Вто­рой ва­ри­ант вы­ход­ных дан­ных:

4

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

Ре­ше­ние.

Счи­та­ем дан­ные. Для этого будем идти по каж­дой стро­ке и счи­тать ко­ли­че­ство прой­ден­ных про­бе­лов. Если про­шли ноль про­бе­лов, то те­ку­щий сим­вол надо от­не­сти к имени, если один, то к фа­ми­лии, если два, то иг­но­ри­ру­ем, т. к. класс не важен, и, если три, то от­но­сим сим­вол к ко­ли­че­ству бал­лов.

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

 

При­мер пра­виль­ной и эф­фек­тив­ной про­грам­мы на языке Пас­каль.

 

 

var n, i, j, spaces, max, next, cntWinner, cntNext, points : integer;

s, name, lastName, nameWinner, lastNameWinner, nameNext, lastNameNext : string;

Begin

max := 0;

cntWinner:= 0;

next:=0;

cntNext:=0;

readLn(n);

for i := 1 to n do

begin

readLn(s);

spaces := 0;

name := '';

lastName := '';

points := 0;

for j := 1 to length(s) do

if s[j] = ' ' then

inc(spaces)

else

begin

if spaces = 0 then

name:= name + s[j];

if spaces = 1 then

lastName:= lastName + s[j];

if spaces = 3 then

points:= points * 10 + ord(s[j]) - 48;

end;

if points > max then

begin

nameNext:=nameWinner;

lastNameNext:=lastNameWinner;

next:=max;

cntNext:=cntMax;

nameWinner:= name;

lastNameWinner:= lastName;

max := points;

cntWinner := 1;

end;

if points = max then cntWinner:=cntWinner+1;

else if points > next then

begin

nameNext:=name;

lastNameNext:=lastName;

next:=points;

cntNext:=1;

end;

else if points=next then cntNext:=cntNext+1;

end;

if (cntWinner * 4 > n) and (max <= 300) and (cntWinner=1) then write(nameWinner,' ',lastNameWinner);

if (cntWinner * 4 > n) and (max <= 300) and (cntWinner>1) then write(cntWinner);

if (cntWinner * 4 > n) and (max > 300) and (cntNext=1) then write(nameNext,' ',lastNameNext);

if (cntWinner * 4 > n) and (max > 300) and (cntNext>1) then write(cntNext);

if (cntWinner * 4 < n) and (cntNext = 1) then write(nameNext,' ',lastNameNext);

if (cntWinner * 4 < n) and (cntNext > 1) then write(cntNext);

End.

Спрятать критерии
Критерии проверки:

4 балла ста­вит­ся за эф­фек­тив­ную и пра­виль­но ра­бо­та­ю­щую про­грам­му, ко­то­рая, воз­мож­но, со­дер­жит одну син­так­си­че­скую ошиб­ку.

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

2 балла ста­вит­ся, если про­грам­ма не­эф­фек­тив­на по вре­ме­ни ра­бо­ты (пе­ре­би­ра­ют­ся все воз­мож­ные пары эле­мен­тов), или в про­грам­ме две со­дер­жа­тель­ные ошиб­ки, либо шесть-семь син­так­си­че­ских оши­бок.

1 балл ста­вит­ся, если про­грам­ма на­пи­са­на не­вер­но, но из опи­са­ния ал­го­рит­ма и общей струк­ту­ры про­грам­мы видно, что эк­за­ме­ну­е­мый в целом пра­виль­но пред­став­ля­ет путь ре­ше­ния за­да­чи.

Далее уточ­ня­ют­ся пе­ре­чис­лен­ные выше кри­те­рии.

Кри­те­рии оце­ни­ва­ния вы­пол­не­ния за­да­нияБаллы
Про­грам­ма пра­виль­но ра­бо­та­ет для любых вход­ных дан­ных про­из­воль­но­го раз­ме­ра и на­хо­дит ответ, не со­хра­няя вход­ные дан­ные в мас­си­ве. До­пус­ка­ет­ся на­ли­чие в тек­сте про­грам­мы одной син­так­си­че­ской ошиб­ки: про­пу­щен или не­вер­но ука­зан знак пунк­ту­а­ции, не­вер­но на­пи­са­но или про­пу­ще­но за­ре­зер­ви­ро­ван­ное слово языка про­грам­ми­ро­ва­ния, не опи­са­на или не­вер­но опи­са­на пе­ре­мен­ная, при­ме­ня­ет­ся опе­ра­ция, не­до­пу­сти­мая для со­от­вет­ству­ю­ще­го типа дан­ных (если одна и та же ошиб­ка встре­ча­ет­ся не­сколь­ко раз, то это счи­та­ет­ся за одну ошиб­ку).4
Не вы­пол­не­ны усло­вия, поз­во­ля­ю­щие по­ста­вить 4 балла, при этом про­грам­ма ра­бо­та­ет верно, но раз­мер ис­поль­зу­е­мой па­мя­ти за­ви­сит от длины вход­ной по­сле­до­ва­тель­но­сти. На­при­мер, вход­ные дан­ные за­по­ми­на­ют­ся в мас­си­ве или дру­гой струк­ту­ре дан­ных, раз­мер ко­то­рой со­от­вет­ству­ет числу N.

До­пус­ка­ет­ся одна из сле­ду­ю­щих оши­бок:

1) Не­вер­но или не­пол­но оформ­ля­ет­ся вывод ре­зуль­та­тов.

2) Вы­во­дит­ся ну­ле­вое (или какое-то дру­гое) вы­чис­лен­ное

кон­троль­ное зна­че­ние, когда в по­сле­до­ва­тель­но­сти нет пары чисел, про­из­ве­де­ние ко­то­рых не крат­но 10.

3) При вы­чис­ле­нии кон­троль­но­го зна­че­ния рас­смат­ри­ва­ют­ся не все воз­мож­ные пары чисел.

До­пус­ка­ет­ся на­ли­чие от одной до трёх син­так­си­че­ских оши­бок, опи­сан­ных в кри­те­ри­ях на 4 балла.

3
ННе вы­пол­не­ны усло­вия, поз­во­ля­ю­щие по­ста­вить 3 или 4 балла, при этом про­грам­ма ра­бо­та­ет верно, эф­фек­тив­но или нет. В част­но­сти, в 2 балла оце­ни­ва­ют­ся пе­ре­бор­ные ре­ше­ния, в ко­то­рых все ис­ход­ные дан­ные со­хра­ня­ют­ся в мас­си­ве, рас­смат­ри­ва­ют­ся все воз­мож­ные пары чисел и вы­би­ра­ет­ся пара с мак­си­маль­ным не крат­ным 10 про­из­ве­де­ни­ем.

До­пус­ка­ет­ся на­ли­чие не­сколь­ких со­дер­жа­тель­ных оши­бок, опи­сан­ных в кри­те­ри­ях на 3 балла, и до пяти син­так­си­че­ских оши­бок, опи­сан­ных в кри­те­ри­ях на 4 балла.

2
Не вы­пол­не­ны усло­вия, поз­во­ля­ю­щие по­ста­вить 2, 3 или 4 балла, но про­грам­ма ра­бо­та­ет в от­дель­ных част­ных слу­ча­ях. 1 балл также ста­вит­ся, если про­грам­ма не­ра­бо­то­спо­соб­на или не на­пи­са­на, но из по­яс­не­ний видно, что эк­за­ме­ну­е­мый в целом верно пред­став­ля­ет путь ре­ше­ния.1
Не вы­пол­не­ны усло­вия, поз­во­ля­ю­щие по­ста­вить 1, 2, 3 или 4 балла.0
Мак­си­маль­ный балл4
Источник: ЕГЭ по ин­фор­ма­ти­ке 05.05.2014. До­сроч­ная волна. Ва­ри­ант 2