Задача "Семён и ожидание маршрутки" - Pascal

Узнай цену своей работы

Формулировка задачи:

Иногда уехать на другой берег бывает очень сложно. В такие моменты Семён развлекает себя тем, что запоминает номера проезжающих мимо маршруток и пытается определить самую нерасторопную из них. Семён ждёт уже N минут, и в i-ю минуту мимо него проезжала маршрутка с номером Ai. Семён обратил внимание, что все увиденные номера к текущему моменту появлялись как минимум дважды. Теперь Семён хочет определить максимальное время между появлениями маршруток с одинаковым номером. Помогите ему удовлетворить своё любопытство. Входные данные Первая строка содержит целое число N (2 ≤ N ≤ 100000) — количество минут, в течение которых Семён наблюдает за маршрутками. Вторая строка содержит N целых чисел Ai (1 ≤ Ai ≤ 100000) — номера проезжающих мимо маршруток. Каждый номер встречается не менее двух раз. Выходные данные Выведите одно целое число — максимальное время в минутах между последовательным появлением одинаковых номеров. Примеры входные данные 7 23 5 3 3 23 5 23 выходные данные 4 входные данные 5 2 2 1 2 1 выходные данные 2

Решение задачи: «Задача "Семён и ожидание маршрутки"»

textual
Листинг программы
var
a:array[1..10000]of longint;
i,n,t,rez,max:longint;
begin
readln(n);
max:=0;
for i:=1 to n do
begin
read(t);
if a[t]=0 then a[t]:=i
 else
 begin
 rez:=i-a[t];
 a[t]:=i;
 if rez>max then max:=rez;
 end;
end;
writeln(max);
end.

Объяснение кода листинга программы

  1. Объявляется массив a размером 10000 элементов типа longint.
  2. Объявляются переменные i, n, t, rez, max типа longint.
  3. Считывается значение переменной n.
  4. Устанавливается начальное значение переменной max равным 0.
  5. Выполняется цикл от 1 до n.
    1. Считывается значение переменной t.
    2. Если элемент массива a с индексом t равен 0, то присваивается значение i этому элементу.
    3. В противном случае (если элемент массива не равен 0):
      1. Вычисляется разница между i и значением элемента массива a[t] и присваивается переменной rez.
      2. Элементу массива a[t] присваивается значение i.
      3. Если значение rez больше, чем значение max, то max присваивается значение rez.
  6. Выводится значение переменной max.

Оцени полезность:

10   голосов , оценка 4.3 из 5