n = int(input())
pp = list(map(int, input().split()))
qq = [sum(abs(p - q) for q in pp) for p in pp]
print(*[i + 1 for i in sorted(range(n), key=qq.__getitem__)])
Александр Миранович, я ничего не понял. Давай без этой точки. twobomb дал алгоритм проверки, не пересекаются ли два отрезка - это раз. Надо перебрать все пары звеньев ломаной и найти пересекающиеся - это два. Те отрезки, которые участвут в пересечениях, выбрасываем, и получаем обрывки ломаной (их два или больше - по числу петель) - это три. Замыкаем концы обрывков и получаем замкнутые ломаные, они же многоугольники - это финиш.
Александр Миранович, у тебя же есть замкнутый путь (целиком, обе петли) как цепочка точек, и ты нашел 2 пересекающихся звена и точку их пересечения. Ну так разорви этот путь, добавь в одну половинку найденую точку пересечения, а другую выброси.