Register

OR

Do you already have an account? Login

Login

OR

Don't you have an account yet? Register

Newsletter

Submit to our newsletter to receive exclusive stories delivered to you inbox!

Программирование (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) после осуществления переворотов. Числа разделяйте пробелом.

более месяца назад
Просмотров : 21    Ответов : 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



более месяца назад
Ваш ответ:
Комментарий должен быть минимум 20 символов
Чтобы получить баллы за ответ войди на сайт





Вы можете из нескольких рисунков создать анимацию (или целый мультфильм!). Для этого нарисуйте несколько последовательных кадров и нажмите кнопку Просмотр анимации.


Другие вопросы: