Олимпиады по информатике (ХМАО - Югра)

   
 
Югорский НИИ ИТ, Югорский ФМЛ
Логин:   Пароль:    
 
   
 
Новости
О проекте
Регистрация
Гостевая книга
Форум
Архив задач
Состояние системы
Олимпиады
Работа в системе
Рейтинг
Новичкам
Методическое пособие
Дистанционное обучение
Дистрибутивы
Ссылки

















Колокол

(Время: 0,4 сек. Память: 16 Мб Сложность: 28%)

Очевидно, что для формирования необходимой последовательности следует отсортировать элементы массива по неубыванию. Сразу заметим, что квадратичный алгоритм сортировки не позволит решить задачу полностью в силу установленных ограничений (n <= 30000), поэтому следует использовать более эффективный алгоритм с порядком сложности не менее, чем O(n*ln(n)) .

Первая половина искомой последовательности представляет собой элементы отсортированного массива, имеющие нечетные номера, располагать их следует в том же порядке, что и в отсортированном массиве. Вторая часть последовательности состоит из элементов с четными номерами, которые следует записывать в обратном порядке. Элемент, который следует вывести в i-й позиции искомой последовательности, будет иметь в отсортированном массиве номер 2*i-1 в случае, когда осуществляется вывод первой половины последовательности, во второй части он будет иметь номер 2*(n-i-1). Условие принадлежности элемента к перовой части имеет вид: 2*i <= n+1.

Алгоритмическая реализация:

  read(n)
  for i=1..n read(a[i])

  sort(1,n)

  for i=1..n
    if(2*i <= n+1) write(a[2*i-1],' ')
             else write(a[2*(n-i+1)],' ')

[Все попытки] [Задача]


 
     
Югорский НИИ ИТ, Югорский ФМЛ