На вход программе подаются сведения о пассажирах, сдавших свой багаж в камеру хранения. В первой строке задано текущее время: через двоеточие два целых числа, соответствующие часам (от 00 до 23 – ровно 2 символа) и минутам (от 00 до 59 – ровно 2 символа). Во второй строке сообщается количество пассажиров N, которое не меньше 10, но не превосходит 1000. Каждая из следующих N строк имеет следующий формат:
<Фамилия> <время освобождения ячейки>,
где <Фамилия> – строка, состоящая не более, чем из 20 символов, <время освобождения ячейки> – через двоеточие два целых числа, соответствующие часам (от 00 до 23 – ровно 2 символа) и минутам (от 00 до 59 – ровно 2 символа). <Фамилия> и <время освобождения ячейки> разделены одним пробелом. Сведения отсортированы в порядке времени сдачи багажа.
Требуется написать программу, выводящую фамилии пассажиров, которые в ближайшие 2 часа должны освободить ячейки, в хронологическом порядке освобождения ячеек.
Пример входных данных:
10:00
3
Иванов 12:00
Петров 10:00
Сидоров 12:12
Результат работы программы для этого примера:
Петров
Иванов
Решение:
Автор Орехова Екатерина
program n1;
uses crt;
var i,j,n,f,k : integer;
s,s1,s2,t: string;
m,t1,d:real;
a:array [1..1000] of string;
b:array [1..1000] of real;
begin
readln (t);
readln (n);
t[3]:='.';
k:=0;
t1:=strtofloat(t);
for f:=1 to n do begin readln (s);
i:=1;
s1:='';
while (s[i]<>' ') do begin
s1:=s1+(s[i]); //фамилия
i:=i+1;
end;
i:=i+1;
s2:='';
while (i<>length(s)) do begin
s2:=s2+(s[i]); //время
i:=i+1;
end;
s2[3]:='.';
m:=strtofloat(s2);
if ((t1+2)>= m) then begin
k:=k+1;
a[k]:=s1;
b[k]:=m;
end;
end;
for i:=1 to k-1 do
for j:=1 to k-1 do
if (b[j]>b[j+1]) then begin
d:=b[j];
s1:=a[j];
b[j]:=b[j+1];
a[j]:=a[j+1];
b[j+1]:=d;
a[j+1]:=s1;
end;
for i:=1 to k do writeln (a[i], b[i]:5:2);
writeln;
end.
|