Требуется написать
программу, которая в массиве из n целых чисел наименьший элемент поместит на
первое место, наименьший из оставшихся – на последнее, следующий по величине –
на второе место, следующий – на предпоследнее и так далее – до середины
массива.
Входные данные
Во входном файле
INPUT.TXT записано в первой строке число n (1 ≤ n ≤ 30000). Во второй строке
записаны через пробел элементы массива, числа по абсолютной величине не большие
32767.
Выходные данные
В единственную строку
выходного файла OUTPUT.TXT нужно вывести элементы полученного массива,
разделенные одним пробелом.
Пример
№
|
INPUT.TXT
|
OUTPUT.TXT
|
1
|
5
1 2 3 4 5 |
1 3 5 4 2
|
Решение
Идея решения заключается в следующем: считанные дынные сортируются. Затем отсортированный список делится на два списка, в первый элементы , стоящие на нечетных места, во-второй - стоящие на нечетных местах. В о втором списке элементы переставляются в обратном порядке. Списки склеиваются. Задача решена.n = int(f.readline()) # читаем количество чисел
a=[0]*n # резервируем место
a=f.readline().split() # чтение из файла данных строки, разделенных пробелами
a=[int(i) for i in a] # перевод текстовых данных в числа
a=sorted(a) # сортировка полученного списка чисел
b=[a[i] for i in range(n) if i%2==0] # формируем список их элементов, стоящих на нечетных местах
c=[a[i] for i in range(n) if i%2!=0] # формируем список их элементов, стоящих на четных местах
c.reverse() # переставляем числа в обратном порядке
a=b+c # склеиваем два с писка в один
f.close() # закрываем файл для чтения
s="" # инициализируем пустую строку
f1=open("output.txt","w") # открываем файл для записи
for i in a:
s=s+str(i)+" " # формируем строку вывода
f1.write(s[:-1]) # выводим в файл
f1.close() # закрываем файл вывода
Комментариев нет:
Отправить комментарий