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

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

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

 

<Ком­па­ния><Улица><Вид><Цена>

 

где <Ком­па­ния>  — стро­ка, со­сто­я­щая не более, чем из 20 сим­во­лов без про­бе­лов, <Улица>  — стро­ка, со­сто­я­щая не более, чем из 20 сим­во­лов без про­бе­лов, <Вид>  — сим­вол Б, К или Ж, <Цена>  — целое число в диа­па­зо­не от 100 до 500, обо­зна­ча­ю­щее сто­и­мость одной розы.

<Ком­па­ния> и <Улица>, <Улица> и <Вид>, а также <Вид> и <Цена> раз­де­ле­ны ровно одним про­бе­лом.

 

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

Тор­г­Цвет Са­до­вая Ж 225

 

Про­грам­ма долж­на вы­во­дить через про­бел 3 числа – ко­ли­че­ство лавок, про­да­ю­щих де­шев­ле всего белые, крас­ные и жел­тые розы со­от­вет­ствен­но. Если роза ка­ко­го-то вида нигде не про­да­ет­ся, то сле­ду­ет вы­ве­сти 0.

 

При­мер вы­ход­ных дан­ных:

7 5 0

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

Ре­ше­ние.

Будем по оче­ре­ди об­ра­ба­ты­вать строч­ки. Для этого будем по­сим­воль­но «про­пус­кать» на­зва­ния ком­па­ний и улиц, так как они не нужны. После чего счи­ты­вать вид и цену. Для каж­до­го вида у нас будет ячей­ка в мас­си­ве min и ячей­ка в мас­си­ве cnt, ко­то­рые по­ка­зы­ва­ют, какой на дан­ный мо­мент ми­ни­мум и сколь­ко их со­от­вет­ствен­но. Если новая цена мень­ше преды­ду­щей, то за­пом­ним её и по­ста­вим cnt рав­ным еди­ни­це. Если новая цена равна ми­ни­маль­ной, то про­сто уве­ли­чим cnt на еди­ни­цу. Из­на­чаль­но все min про­и­ни­ци­а­ли­зи­ру­ем 1000, боль­шим зна­че­ни­ем, ко­то­ро­го точно не будет.

При­ведём код на языке Pascal:

var n, i, ind, cost : integer;

buf : char;

min, cnt : array[1..3] of integer;

begin

for i := 1 to 3 do

begin

min[i] := 1000;

cnt[i] := 0;

end;

readLn(n);

for i := 1 to n do

begin

while buf <> ' ' do

   read(buf);

read(buf);

while buf <> ' ' do

   read(buf);

read(buf);

if buf = 'Б' then

   ind := 1;

if buf = 'К' then

   ind := 2;

if buf = 'Ж' then

   ind := 3;

readLn(cost);

if cost = min[ind] then

   inc(cnt[ind]);

if cost < min[ind] then

   begin

   min[ind] := cost;

   cnt[ind] := 1;

   end;

end;

writeLn(cnt[1], ' ', cnt[2], ' ', cnt[3]);

end.

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

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

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

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

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

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

Кри­те­рии оце­ни­ва­ния вы­пол­не­ния за­да­нияБаллы
Про­грам­ма ра­бо­та­ет верно и эф­фек­тив­но, т.е. кор­рект­но вы­де­ля­ет из вход­ных дан­ных время, за­по­ми­на­ет фа­ми­лии толь­ко тех пас­са­жи­ров, у ко­то­рых бронь за­кон­чит­ся в бли­жай­шие 3 часа. Фа­ми­лии этих пас­са­жи­ров верно сор­ти­ру­ют­ся со­глас­но вре­ме­ни окон­ча­ния, а затем пе­ча­та­ют­ся. До­пус­ка­ет­ся на­ли­чие в тек­сте про­грам­мы одной син­так­си­че­ской ошиб­ки: про­пу­щен или не­вер­но ука­зан знак пунк­ту­а­ции; не­вер­но на­пи­са­но или про­пу­ще­но за­ре­зер­ви­ро­ван­ное слово языка про­грам­ми­ро­ва­ния; не опи­са­на или не­вер­но опи­са­на пе­ре­мен­ная; при­ме­ня­ет­ся опе­ра­ция, не до­пу­сти­мая для со­от­вет­ству­ю­ще­го типа дан­ных.4
Про­грам­ма ра­бо­та­ет в целом верно, но со­дер­жит, по край­ней мере, две из сле­ду­ю­щих не­ра­ци­о­наль­но­стей: со­хра­ня­ют­ся фа­ми­лии и зна­че­ния вре­ме­ни для всех пас­са­жи­ров, сор­ти­ру­ют­ся все фа­ми­лии, а при пе­ча­ти ана­ли­зи­ру­ет­ся, какие из них до­пу­сти­мые. До­пус­ка­ет­ся на­ли­чие до трёх син­так­си­че­ских оши­бок, опи­сан­ных выше.3
Про­грам­ма ра­бо­та­ет в целом верно, но не все­гда верно опре­де­ля­ет ис­ко­мые зна­че­ния вре­ме­ни или не­кор­рект­но ра­бо­та­ет в слу­чае от­сут­ствия ис­ко­мых времён. Воз­мож­но, в ре­а­ли­за­ции ал­го­рит­ма со­дер­жит­ся одна-две ошиб­ки (ис­поль­зу­ет­ся знак «<» вме­сто «>», «or» вме­сто «and» и т.п.). Воз­мож­но, не­кор­рект­но ор­га­ни­зо­ва­но счи­ты­ва­ние вход­ных дан­ных. До­пус­ка­ет­ся на­ли­чие до пяти син­так­си­че­ских оши­бок, опи­сан­ных выше.2
Про­грам­ма не­вер­но ра­бо­та­ет при не­ко­то­рых вход­ных дан­ных и, воз­мож­но, со­дер­жит ошиб­ку в сор­ти­ров­ке, или вре­ме­на сор­ти­ру­ют­ся верно, а со­от­вет­ству­ю­щие им фа­ми­лии нет. До­пус­ка­ет­ся до четырёх раз­лич­ных оши­бок в ходе ре­ше­ния за­да­чи, в том числе опи­сан­ных в кри­те­ри­ях при­сво­е­ния 2 бал­лов. До­пус­ка­ет­ся на­ли­чие до семи син­так­си­че­ских оши­бок, опи­сан­ных выше.1
Не вы­пол­не­ны усло­вия, поз­во­ля­ю­щие по­ста­вить 1, 2, 3 или 4 балла.0
Мак­си­маль­ный балл4
Источник: РЕШУ ЕГЭ — Пред­эк­за­ме­на­ци­он­ная ра­бо­та 2014 по ин­фор­ма­ти­ке