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

Ответы 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
    • Автор:

      peep96oz
    • 5 лет назад
    • 0
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years