Поиск по этому блогу

суббота, 3 февраля 2018 г.

Задача "Автобусная экскурсия"

Оргкомитет Московской городской олимпиады решил организовать обзорную экскурсию по Москве для участников олимпиады. Для этого был заказан двухэтажный автобус (участников олимпиады достаточно много и в обычный они не умещаются) высотой 437 сантиметров. На экскурсионном маршруте встречаются N мостов. Жюри и оргкомитет олимпиады очень обеспокоены тем, что высокий двухэтажный автобус может не проехать под одним из них. Им удалось выяснить точную высоту каждого из мостов. Автобус может проехать под мостом тогда и только тогда, когда высота моста превосходит высоту автобуса.
Помогите организаторам узнать, закончится ли экскурсия благополучно, а если нет, то установить, где произойдет авария.
Входные данные
Во входном файле INPUT.TXT сначала содержится число N (1 ≤ N ≤ 1000). Далее идут N натуральных чисел, не превосходящих 10000 - высоты мостов в сантиметрах в том порядке, в котором они встречаются на пути автобуса.
Выходные данные
В единственную строку выходного файла OUTPUT.TXT нужно вывести фразу "No crash", если экскурсия закончится благополучно. Если же произойдет авария, то нужно вывести сообщение "Crash k", где k - номер моста, где произойдет авария. Фразы выводить без кавычек ровно с одним пробелом внутри.
Примеры
INPUT.TXT
OUTPUT.TXT
1
1
763
No crash
2
3
763 245 113
Crash 2
3
1
437
Crash 1
Решение
var  a,i,r,c:integer;s:boolean;
m:array[1..1000] of integer;
f,f1:text;
begin
assign(f,'input.txt'); 
    reset(f); 
     assign(f1,'output.txt'); 
     rewrite(f1); 
    readln(f,a);s:=false;
    for i:=1 to a do
    begin
     read(f,m[i]); 
      if m[i]<=437 then s:=true; 
    end;r:=a+1;
      if s then begin
      for i:=1 to a do
    if m[i]<=437 then if r>i then r:=i; 
    end; 
         
    if s then  write(f1,'Crash ',r) else  write(f1,'No crash');
       close(f);
  close(f1); 
end.

Вопросы, замечания, свои вариант решения пишите в комментариях.

Комментариев нет:

Отправить комментарий