Напишите программу, которая сортирует отдельно элементы массива с чётными и нечётными значениями. Все элементы с нечётными значениями нужно отсортировать по возрастанию, а элементы с чётными значениями – по убыванию. При этом э...

Напишите программу, которая сортирует отдельно элементы массива с чётными и нечётными значениями. Все элементы с нечётными значениями нужно отсортировать по возрастанию, а элементы с чётными значениями – по убыванию. При этом элементы каждой из групп (как чётные, так и нечётные) должны занимать то же множество позиций в массиве, что и до сортировки. Входные данные Первая строка содержит размер массива N . Во второй строке через пробел задаются N чисел – элементы массива. Гарантируется, что 0 < N ≤ 100000 . Выходные данные Программа должна вывести все элементы отсортированного массива в одну строку, разделив их пробелами.
Гость
Ответ(ы) на вопрос:
Гость
//Весьма слабое решение, но после перерыва мне простительно, хех. //Pascal ABC.NET v3.1 сборка 1219 Var  ar,arOdd,arNotOdd:array of integer;  n,i,j,k1,k2:integer; begin  readln(n);  setlength(ar,n+1);  k1:=1;  k2:=1;  for i:=1 to n do  begin   readln(ar[i]);   if odd(i) then    begin     setlength(arOdd,k1);     arOdd[k1-1]:=ar[i];     inc(k1);    end    else    begin     setlength(arNotOdd,k2);     arNotOdd[k2-1]:=ar[i];     inc(k2);    end;   end;  sort(arOdd);  sort(arNotOdd);  reverse(arNotOdd);  k1:=0;  k2:=0;  i:=0;  while i<>n do   begin   inc(i);    if odd(i) then     begin      ar[i]:=arOdd[k1];      inc(k1);     end     else     begin      ar[i]:=arNotOdd[k2];      inc(k2);     end;   write(ar[i],' ');   end; end. Пример ввода: 5 1 2 3 4 5 Пример вывода: 1 4 3 2 5 
Не нашли ответ?
Ответить на вопрос
Похожие вопросы