Projected Array

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

요약
원점을 기준으로 점들을 회전시켜 x축에 사영할 때, 가능한 수열의 반전 수 최솟값을 구한다.
난이도

어려움10점 중 8점

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

문제

22차원 평면 상에 서로 다른 점들이 NN개 놓여있다. 각 점에는 11부터 NN까지의 서로 다른 정수가 쓰여있다.

이제 모든 점들을 원점을 기준으로 특정한 각도만큼 회전시키고, xx축 위로 사영한다. 이를 xx좌표가 증가하는 순서대로 점을 읽었을 때, 점에 쓰인 수들로 길이 NN의 수열을 만들 수 있다. 단 어떤 두 점이 회전 이후 같은 xx좌표를 가지는 것은 금지된다. 이 방법으로 만들 수 있는 수열 중, 반전 수가 최소인 수열의 반전 수를 구하시오.

여기서 수열 A_1A\_1, A_2A\_2, ⋯\cdots, A_nA\_n의 반전 수란, 1≤i<j≤n1 \le i < j \le n이면서 A_i>A_jA\_i > A\_j인 순서쌍 (i,j)(i, j)의 개수를 말한다.

입력

첫 번째 줄에 점들의 개수 NN이 주어진다. (1≤N≤2000)(1 \le N \le 2000)

다음 NN개의 줄에 걸쳐, ii번째 줄에는 정수 ii가 쓰여있는 점의 좌표를 나타내는 두 정수 x_ix\_i, y_iy\_i가 공백으로 구분되어 주어진다. (1≤i≤N;−109≤x_i,y_i≤109)(1 \le i \le N; -10^9 \le x\_i, y\_i \le 10^9)

출력

첫 번째 줄에 가능한 최소의 반전 수를 출력한다.

예제1

  1. 예제 1

    입력
    5
    11 5
    1 8
    9 7
    6 10
    4 3
    
    예상 출력
    2