Витя работает недалеко от одной из станций кольцевой линии метро, а живет рядом с другой станцией той же линии. Требуется выяснить, мимо какого наименьшего количества промежуточных станций необходимо проехать Вите по кольцу, чтобы добраться с работы домой.Входные данные
Во входном файле INPUT.TXT заданы три числа: сначала N – общее количество станций кольцевой линии, а затем i и j – номера станции, на которой Витя садится, и станции, на которой он должен выйти. Станции пронумерованы подряд натуральными числами 1, 2, 3, …, N (1-я станция – соседняя с N-й), N не превосходит 100. Числа i и j не совпадают. Все числа разделены пробелом.
Выходные данные
В выходной файл OUTPUT.TXT требуется вывести минимальное количество промежуточных станций (не считая станции посадки и высадки), которые необходимо проехать Вите.
 
Вопросы, замечания, свои вариант решения пишите в комментариях.
Во входном файле INPUT.TXT заданы три числа: сначала N – общее количество станций кольцевой линии, а затем i и j – номера станции, на которой Витя садится, и станции, на которой он должен выйти. Станции пронумерованы подряд натуральными числами 1, 2, 3, …, N (1-я станция – соседняя с N-й), N не превосходит 100. Числа i и j не совпадают. Все числа разделены пробелом.
Выходные данные
В выходной файл OUTPUT.TXT требуется вывести минимальное количество промежуточных станций (не считая станции посадки и высадки), которые необходимо проехать Вите.
Примеры
| 
   
№ 
 | 
  
   
INPUT.TXT 
 | 
  
   
OUTPUT.TXT 
 | 
 
| 
   
1 
 | 
  
   
100 5 6 
 | 
  
   
0 
 | 
 
| 
   
2 
 | 
  
   
10 1 9 
 | 
  
   
1 
 | 
 
Решение
var
i,n,j,k:integer;
f,f1:text; 
begin
assign(f,'input.txt'); 
    reset(f); 
     assign(f1,'output.txt'); 
     rewrite(f1); 
    readln(f,n,i,j);if i>j then begin k:=i; i:=j; j:=k; end;
    if (n-j+i-1)<(j-i) then k:=(n-j-1)+i else k:=j-i-1;
    write(f1,k);
  close(f1);  close(f);
end.
Комментариев нет:
Отправить комментарий