Мальчик Лёша, ученик 3го курса, очень хотел много денег, и поэтому вместо того, чтобы делать домашнее задание в университете, он много работал. Но вот его отчислили, и у него появилось ещё больше свободного времени! Он узнал у своего друга о том, что очень много зарабатывают строители, но так как у Лёши не было высшего образования, ему предложили работу укладчика дороги. Лёша выложил часть дороги, начиная с указателя на A-й километр до указателя на B-й километр. Затем Лёша взял новый грузовик с щебнем и выложил ещё часть дороги, начиная с указателя на C-й километр до указателя на D-й километр, при этом часть дороги могла быть покрыта дважды (так как у мальчика нет высшего образования, то его начальник мог заставить переделать какой-то из участков дороги). Кроме того Лёша мог выкладывать дорогу как справа налево, так и слева направо — свобода выбора.
Напишите программу, вычисляющую общую длину уложенной дороги.
Формат ввода
Первая строка ввода содержит четыре натуральных числа A,B,C и D, разделенных пробелами (1 ≤ A,B,C,D ≤ 109) — номера километров дороги, которую укладывал Лёша.
Формат вывода
Вывести одно целое число — общую длину уложенной дороги.
Пример 1
Ввод: 1 2 6 4; вывод: 3
Пример 2
Ввод: 1 6 2 4; вывод: 5
// Внимание! Если программа не работает, обновите версию!
procedure Cheburek(s:string);
begin
var n:=ReadInteger('Количество строк в матрице:');
var m:=ReadInteger('Количество столбцов в массиве:');
Writeln('*** ',s,' матрица [',n,',',m,'] ***');
var a:=MatrRandom(n,m,-99,99);
a.Println(4); Writeln(4*a.ColCount*'-');
var s1:='сортированный вектор ср.значений нечетных столбцов';
Writeln(s1);
a.Cols.Select(x->x.Average).Where((x,i)->i.IsEven).Sorted.Println;
Writeln(s1.Length*'-');
end;
begin
Cheburek('первая');
Cheburek('вторая');
end.
Пример
Количество строк в матрице: 4
Количество столбцов в массиве: 8
*** первая матрица [4,8] ***
98 -64 -30 84 -6 11 4 7
-45 23 55 47 67 87 70 -64
40 20 91 -27 -12 42 -49 10
-59 -79 5 -77 -59 -44 -4 -10
сортированный вектор ср.значений нечетных столбцов
-2.5 5.25 8.5 30.25
Количество строк в матрице: 6
Количество столбцов в массиве: 11
*** вторая матрица [6,11] ***
-98 -40 -42 81 39 28 -3 -24 -33 79 13
22 26 -79 90 93 46 94 83 -1 -13 -18
-21 -44 85 60 43 -26 -94 -19 -34 99 -72
-35 46 8 30 88 -4 -87 -76 15 -94 9
-70 29 83 -79 -69 12 -24 -53 -27 96 -97
19 80 -98 96 79 84 -76 -29 85 14 14
сортированный вектор ср.значений нечетных столбцов
-31.6666666666667 -30.5 -25.1666666666667 -7.16666666666667 0.833333333333333 45.5
program prog1
integer N, k, i, j
real a(10,10)
read *, N
print *, 'Матрица:'
do i = 1,N
do j = 1,N
a(i,j) = sin(1.0*i+1.0*j/2)
end do
end do
do i = 1, N
print *, (a(i,j), j=1,N)
end do
k = 0
do i = 1, N
do j = 1, N
if(a(i, j) > 0) k = k+1
end do
end do
print *, k
end
Результат:
4
Матрица:
0.997494996 0.909297407 0.598472118 0.141120002
0.598472118 0.141120002 -0.350783229 -0.756802499
-0.350783229 -0.756802499 -0.977530122 -0.958924294
-0.977530122 -0.958924294 -0.705540299 -0.279415488
6