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

На вход про­грам­ме по­да­ют­ся све­де­ния о по­се­ти­те­лях, же­ла­ю­щих по­пасть в по­пу­ляр­ное кафе. В пер­вой стро­ке со­об­ща­ет­ся число же­ла­ю­щих N, ко­то­рое не мень­ше 10, но не пре­вос­хо­дит 1000, и ко­ли­че­ство сто­ли­ков, ко­то­рое не мень­ше 10, но не пре­вос­хо­дит 1000. Каж­дая из сле­ду­ю­щих N строк имеет сле­ду­ю­щий фор­мат:

 

<Фа­ми­лия> <время при­хо­да> < время ухода>,

 

где <Фа­ми­лия>  — стро­ка, со­сто­я­щая не более чем из 20 сим­во­лов; <время при­хо­да>  — через двое­то­чие два целых числа, со­от­вет­ству­ю­щие часам (от 00 до 23  — ровно 2 сим­во­ла) и ми­ну­там (от 00 до 59  — ровно 2 сим­во­ла); <время ухода> имеет тот же фор­мат. <Фа­ми­лия> и <время при­хо­да>, а также <время при­хо­да> и <время ухода> раз­де­ле­ны одним про­бе­лом.

Све­де­ния от­сор­ти­ро­ва­ны в по­ряд­ке вре­ме­ни при­хо­да. Каж­до­му сле­ду­ю­ще­му по­се­ти­те­лю вы­де­ля­ет­ся сво­бод­ный сто­лик с ми­ни­маль­ным но­ме­ром. Если в мо­мент при­хо­да сво­бод­ных сто­ли­ков нет, то по­се­ти­тель ухо­дит, не до­жи­да­ясь осво­бож­де­ния од­но­го из них.

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

 

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

3 10

Ива­нов 09:45 12:00

Пет­ров 10:00 11:00

Си­до­ров 12:00 13:12

 

Ре­зуль­тат ра­бо­ты про­грам­мы на этих вход­ных дан­ных:

Ива­нов 1

Пет­ров 2

Си­до­ров 1

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

Ре­ше­ние.

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

 

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

 

var p:array[1..1000] of integer;

c,c1:char;

i,j,N,K:integer;

name:string;

time1,time2:integer;

begin

readln(N,K);

for i:=1 to K do

p[i]:=0;

for i:=1 to N do

begin

name:='';

repeat

read(c);

name:=name+c

until c=' '; {cчи­та­на фа­ми­лия}

read(c,c1); {cчи­та­ны чаcы пер­во­го вре­ме­ни}

time1:=60*((ord(c)-ord('0'))*10+ ord(c1)-ord('0'));

read(c,c,c1); {про­пу­ще­но двое­то­чие, и cчи­та­ны ми­ну­ты}

time1:=time1+(ord(c)-ord('0'))*10+ord(c1)-ord('0');

read(c,c,c1); {cчи­та­ны чаcы вто­ро­го вре­ме­ни}

time2:=60*((ord(c)-ord('0'))*10+ ord(c1)-ord('0'));

readln(c,c,c1); {про­пу­ще­но двое­то­чие, и cчи­та­ны ми­ну­ты}

time2:=time2+(ord(c)-ord('0'))*10+ord(c1)-ord('0');

for j:=1 to K do

if p[j]<=time1 then

begin

p[j]:=time2;

writeln(name,' ',j);

break;

end

end;

end.

 

 

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

 

DIM p(1000) AS INTEGER

DIM s AS STRING

DIM nm AS STRING

INPUT n

INPUT k

FOR i = 1 TO k

p(i) = 0

NEXT i

FOR j = 1 TO n

LINE INPUT s

c$ = MID$(s, 1, 1)

i = 1

WHILE NOT (c$ = " ")

i = i + 1

c$ = MID$(s, i, 1)

WEND

nm = MID$(s, 1, i)

time1 = (ASC(MID$(s, i + 1, 1)) - ASC("0")) * 60 * 10

time1 = time1 + (ASC(MID$(s, i + 2, 1)) - ASC("0")) * 60

time1 = time1 + (ASC(MID$(s, i + 4, 1)) - ASC("0")) * 10

time1 = time1 + (ASC(MID$(s, i + 5, 1)) - ASC("0"))

time2 = (ASC(MID$(s, i + 7, 1)) - ASC("0")) * 60 * 10

time2 = time2 + (ASC(MID$(s, i + 8, 1)) - ASC("0")) * 60

time2 = time2 + (ASC(MID$(s, i + 10, 1)) - ASC("0")) * 10

time2 = time2 + (ASC(MID$(s, i + 11, 1)) - ASC("0"))

FOR i = 1 TO k

IF time1 >= p(i) THEN

p(i) = time2

PRINT nm, i

GOTO 10

ENDIF

NEXT i

10 NEXT j

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
Источник: ЕГЭ по ин­фор­ма­ти­ке 08.05.2014. До­сроч­ная волна, ре­зерв­ный день. Ва­ри­ант 201