Тема: Swapper
Хочу решит эту задачу. Уже неделю парюсь . Кто может помочь ? Если можно скиньте код пожалуйста.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
MAXimal :: φορυμ » Problems » Swapper
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Хочу решит эту задачу. Уже неделю парюсь . Кто может помочь ? Если можно скиньте код пожалуйста.
Можно заюзать Декартово дерево http://e-maxx.ru/algo/treap :
Можно представить например все числа так: сначала идут те, которые на четных позициях, а затем те которые на нечетных позициях.
И при запросе на своп элементов на отрезке l..r, считать индексы нечетных чисел oddL, oddR и четных evenL, evenR, затем разбивать весь массив на часть prefix evenPositions(evenL, evenR) middle oddPositions(oddL, oddR) suffix и затем мерджить это в нужном порядке prefix oddPositions(oddL, oddR) middle evenPositions(evenL, evenR) suffix.
А сумму считать за два запроса, sum(oddL, oddR) + sum(evenL, evenR).
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
MAXimal :: φορυμ » Problems » Swapper