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

Му­ни­ци­паль­ный этап олим­пи­а­ды по ин­фор­ма­ти­ке про­во­дил­ся для уче­ни­ков 7–11-х клас­сов. Все уче­ни­ки участ­во­ва­ли в общем кон­кур­се. Каж­дый участ­ник олим­пи­а­ды мог на­брать от 0 до 400 бал­лов. По по­ло­же­нию об олим­пиа­де по­бе­ди­те­лем приз­наётся участ­ник, на­брав­ший наи­боль­шее ко­ли­че­ство бал­лов, при усло­вии, что им на­бра­но боль­ше по­ло­ви­ны воз­мож­ных бал­лов. По­бе­ди­те­лей может быть не­сколь­ко, если это ко­ли­че­ство бал­лов на­бе­рут не­сколь­ко че­ло­век; а может и не быть со­всем, если никто не наберёт боль­ше по­ло­ви­ны.

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

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

 

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

 

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

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

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

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

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

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

4

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

Ре­ше­ние.

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

При каж­дом счи­ты­ва­нии дан­ных срав­ни­ва­ем ко­ли­че­ство бал­лов с мак­си­маль­ным, если оно мень­ше или равно 200, то это то ко­ли­че­ство бал­лов, ко­то­рое име­ет­ся у ис­ко­мых школь­ни­ков. Иначе, ищем тот ре­зуль­тат, ко­то­рый мень­ше мак­си­маль­но­го, но при этом наи­бо­лее бли­зок к нему. Найдя такой ре­зуль­тат со­хра­ним имя и фа­ми­лию школь­ни­ка в спе­ци­аль­но отведённых для этого пе­ре­мен­ных. Если же такой ре­зуль­тат уже есть будем уве­ли­чи­вать счёт в пе­ре­мен­ной, пред­на­зна­чен­ной для подсчёта участ­ни­ков с оди­на­ко­вым ко­ли­че­ством бал­лов.

 

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

 

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

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

 

var n, i, j, spaces, max, next, cnt, points, cntMax,: integer;

s, name, lastName, nameNext, lastNameNext, nameMax, lastNameMax: string;

 

Begin

max:= 0;

cnt:=1;

for i := 1 to n do

begin

readLn(s);

spaces := 0;

name := '';

lastName := '';

points := 0;

for j := 1 to length(s) do

begin

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

next:=max;

nameNext:=nameMax;

lastNameNext:=lastNameMax;

cnt:=cntMax;

max := points;

nameMax:= name;

lastNameMax:= lastName;

cntMax:=1

if max < 201 then

begin

next:=max;

nameNext:= name;

lastNameNext:= lastName;

cnt:=1

end

else

if (points <> max) and (points > next) then

begin

next:=points;

nameNext:= name;

lastNameNext:= lastName;

cnt:=1;

end

else if points = next then cnt:=cnt+1

else if points = max the cntMax:=cntMax+1;

end;

end;

if cnt = 1 then

write(nameNext, ' ', lastNameNext)

else

write(cnt);

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. До­сроч­ная волна. Ва­ри­ант 1