아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Хобби

시간 제한2초메모리 제한1024 MB

요약
끝점을 공유하는 경우도 교차로 보는 조건에서 주어진 점들로 서로 교차하지 않는 최대 개수의 선분을 골라 출력한다.
난이도

보통10점 중 5점

유형
기하, 그리디, 정렬
정답자
아직 제출이 없습니다

문제

Любимое хобби Льва Романовича --- соединять точки на плоскости. Однако за последнее время это занятие успело ему наскучить, и он решил разнообразить свое свободное время. А именно, теперь он хочет соединять точки так, чтобы ни одна пара отрезков не пересекалась. Отрезки называются пересекающимися, если они имеют хотя бы одну общую точку (в том числе начало или конец).

Учитель информатики узнал про это хобби и попросил написать вас программу, которая строит максимальное количество отрезков по заданному наборе точек по описанным выше правилам.

입력

В первой строке входного файла дано число nn (1≤n≤10001 \le n \le 1000) --- количество точек. В следующих nn строках дано описание координат ii-ой точки: x_i,y_ix\_i, y\_i (−105≤x_i,y_i≤105-10^5 \le x\_i, y\_i \le 10^5). Гарантируется, что никакие две точки не совпадают.

출력

В качестве ответа на задачу выведите в первой строке число kk --- максимальное количество отрезков. В следующих kk строках выведите описание ii-го отрезка: пару чисел a_i,b_ia\_i, b\_i (1≤a_i,b_i≤n,a_i≠b_i1 \le a\_i, b\_i \le n, a\_i \ne b\_i) --- номера точек. Точки нумеруются с единицы в том порядке, в котором они представленны во входных данных.

예제1

  1. 예제 1

    입력
    8
    2 2
    2 5
    3 3
    4 5
    4 2
    5 6
    7 4
    6 0
    
    예상 출력
    4
    1 5
    2 3
    4 8
    6 7