Программирование (PASCAL ABC) Задан массив из n чисел (a1, a2,..., an). На нем два раза осуществляют операцию переворота подмассива: первый раз с позиции l1 по r1, второй раз с позиции l2 по r2. При перевороте подмассива порядо...

Программирование (PASCAL ABC) Задан массив из n чисел (a1, a2,..., an). На нем два раза осуществляют операцию переворота подмассива: первый раз с позиции l1 по r1, второй раз с позиции l2 по r2. При перевороте подмассива порядок элементов в нем меняется на обратный. Ваша задача — найти последовательность после осуществления переворотов. Входные данные В первой строке входного файла дано число n (1 ≤ n ≤ 100) — количество чисел в массиве. Во второй строке через пробел записаны целые числа a1, a2,..., an (1 ≤ ai ≤ 100). В третьей строке записаны через пробел числа l1 и r1 (1 ≤ l1 ≤ r1 ≤ n), в четвертой — числа l2 и r2 (1 ≤ l2 ≤ r2 ≤ n). Выходные данные Выведите последовательность (a1, a2,..., an) после осуществления переворотов. Числа разделяйте пробелом.
Гость
Ответ(ы) на вопрос:
Гость
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
Не нашли ответ?
Ответить на вопрос
Похожие вопросы