На вход программе подается последовательность целых чисел. В первой строке сообщается количество чисел N, во второй строке идут сами числа.
Требуется написать программу, которая будет выводить на экран числа в следующем порядке:
сначала отрицательные числа, потом положительные. При этом должно сохраняться исходное взаимное положение, как среди отрицательных, так и среди положительных чисел
Вам предлагается два задания с похожими условиями: задание А и задание Б. Вы можете решать оба задания или одно из них по своему выбору. Задание Б более сложное, его решение оценивается выше. Итоговая оценка выставляется как максимальная из оценок за задания А и Б.
Задание А. Имеется набор данных, состоящий из N = 20 пар целых чисел.
Напишите программу для решения такой задачи. В этом варианте задания оценивается только правильность программы, время работы и размер использованной памяти не имеют значения.
Максимальная оценка за правильную программу – 2 балла.
Задание Б. Имеется набор данных, состоящий из почти произвольного количества N целых чисел, чисел не может быть больше ста, N < 100. Напишите программу для решения такой задачи.
Постарайтесь сделать программу эффективной по времени и используемой памяти (или хотя бы по одной из этих характеристик).
Программа считается эффективной по времени, если время работы программы пропорционально количеству пар чисел N, т. е. при увеличении N в k раз время работы программы должно увеличиваться не более чем в k раз.
Программа считается эффективной по памяти, если размер памяти, использованной в программе для хранения данных, не зависит от числа N и не превышает 1 килобайта.
Максимальная оценка за правильную программу, эффективную по времени и памяти, — 4 балла.
Максимальная оценка за правильную программу, эффективную по времени, но неэффективную по памяти, — 3 балла.
a:array[1..100] of integer;
N,i,k,j,x: integer;
begin
readln(N);
j:=0;
k:=1;
for i:=1 to N do
begin
readln(x);
if x<0 then
begin
a[k]:=x;
k:=k+1;
end;
if x>0 then
begin
a[N-j]:=x;
j:=j+1;
end;
end;
for i:=1 to N-j do
if a[i]<>0 then
writeln(a[i]);
for i:=N downto N-j+1 do
if a[i]<>0 then
writeln(a[i]);
end.
Пример 2. Решение задачи А на языке Паскаль.
vara: array[1..20] of integer; {исходные данные}
i: integer;
begin
for i := 1 to 20 do read(a[i]);
for i := 1 to 20 do
if a[i]<0 then writeln(a[i]);
for i := 1 to 20 do
if a[i]>0 then writeln(a[i]);
end.

