Программирование (pascal abc) задан массив из n чисел (a1, an). на нем два раза осуществляют операцию переворота подмассива: первый раз с позиции l1 по r1, второй раз с позиции l2 по r2. при перевороте подмассива порядок элементов в нем меняется на обратный. ваша — найти последовательность после осуществления переворотов. входные данные в первой строке входного файла дано число n (1 ≤ n ≤ 100) — количество чисел в массиве. во второй строке через пробел записаны целые числа a1, an (1 ≤ ai ≤ 100). в третьей строке записаны через пробел числа l1 и r1 (1 ≤ l1 ≤ r1 ≤ n), в четвертой — числа l2 и r2 (1 ≤ l2 ≤ r2 ≤ n). выходные данные выведите последовательность (a1, an) после осуществления переворотов. числа разделяйте пробелом.

LORDytGucci LORDytGucci    2   16.06.2019 03:30    1

Ответы
Const
  nn = 100;

var
  n, l1, l2, r1, r2, i: integer;
  a, b: array[1..nn] of integer;
  F: Text;

begin
  Assign(F, 'input.txt');
  Reset(F);
  Readln(F, n);
  for i := 1 to n do Read(F, a[i]);
  Readln(F, l1, r1);
  Readln(F, l2, r2);
  Close(F);
  for i := 1 to l1 - 1 do b[i] := a[i];
  for i := l1 to r1 do b[i] := a[l1 + r1 - i];
  if l2 <= r1 then
  begin
    for i := l1 to r1 do a[i] := b[i];
    for i := l2 to r2 do b[i] := a[l2 + r2 - i]
  end
  else
  begin
    for i := r1 + 1 to l2 - 1 do b[i] := a[i];
    for i := l2 to r2 do b[i] := a[l2 + r2 - i];
  end;
  for i := r2 + 1 to n do b[i] := a[i];
  for i := 1 to n do Write(b[i],' ');
end.

Результат решения:
5 8 3 6 0 14 -6 -2 4 1
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика