Напишите программу, которая сортирует отдельно элементы массива с чётными и нечётными значениями. Все элементы с нечётными значениями нужно отсортировать по возрастанию, а элементы с чётными значениями – по убыванию. При этом элементы каждой из групп (как чётные, так и нечётные) должны занимать то же множество позиций в массиве, что и до сортировки. Входные данные Первая строка содержит размер массива 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
более месяца назад
Ваш ответ:
Вы можете из нескольких рисунков создать анимацию (или целый мультфильм!). Для этого нарисуйте несколько последовательных кадров
и нажмите кнопку Просмотр анимации.