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!

Напишите программу, которая сортирует отдельно элементы массива с чётными и нечётными значениями. Все элементы с нечётными значениями нужно отсортировать по возрастанию, а элементы с чётными значениями – по убыванию. При этом элементы каждой из групп (как чётные, так и нечётные) должны занимать то же множество позиций в массиве, что и до сортировки.
Входные данные
Первая строка содержит размер массива N . Во второй строке через пробел задаются N чисел – элементы массива. Гарантируется, что 0 < N ≤ 100000 .
Выходные данные
Программа должна вывести все элементы отсортированного массива в одну строку, разделив их пробелами.

более месяца назад
Просмотров : 47    Ответов : 1   

Лучший ответ:

//Весьма слабое решение, но после перерыва мне простительно, хех.
//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 

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





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


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