만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

Eureka

시간 제한5초메모리 제한64 MB

요약
n개의 점 가운데 선택한 점들이 모두 어떤 두 점을 잇는 선분 위에 놓이는 부분집합의 개수를 10^9+7로 나눈 나머지로 구합니다.
난이도

보통10점 중 6점

유형
기하, 정렬, 수학
정답자
아직 제출이 없습니다

문제

Zhang 교수는 평면 위에 nn개의 점을 찍었고, 점에는 1,2,…,n1, 2, \ldots, n 번호가 붙어 있다. ii번 점의 좌표는 (xi,yi)(x_i, y_i)이다. Zhang 교수는 최고 집합의 개수를 알고 싶어 한다. 개수는 매우 클 수 있으므로 109+710^9 + 7로 나눈 나머지를 구한다.

점 번호들의 집합 PP에 최고 쌍이 하나 이상 있으면, PP를 최고 집합이라 한다. 서로 다른 두 번호 uu, vv (u,v∈Pu, v \in P, u≠vu \ne v)가 최고 쌍이라는 것은 PP의 모든 ww에 대해 f(u,v)≥g(u,v,w)f(u, v) \ge g(u, v, w)가 성립한다는 뜻이다. 여기서 f(u,v)=(xu−xv)2+(yu−yv)2f(u, v) = \sqrt{(x_u - x_v)^2 + (y_u - y_v)^2}이고, g(u,v,w)=f(u,v)+f(v,w)+f(w,u)2g(u, v, w) = \frac{f(u, v) + f(v, w) + f(w, u)}{2}이다.

입력

여러 개의 테스트 케이스가 주어진다. 첫 줄에는 테스트 케이스의 수 TT가 주어진다. 각 테스트 케이스의 첫 줄에는 점의 개수 nn (1≤n≤10001 \le n \le 1000)이 주어지고, 이어서 nn개의 줄에 정수 xix_i와 yiy_i (−109≤xi,yi≤109-10^9 \le x_i, y_i \le 10^9)가 한 줄에 하나씩 주어진다. 테스트 케이스는 250개를 넘지 않으며, 모든 테스트 케이스의 nn을 합친 값은 40 00040\,000 이하이다.

출력

각 테스트 케이스마다 최고 집합의 개수를 109+710^9 + 7로 나눈 나머지를 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    3
    3
    1 1
    1 1
    1 1
    3
    0 0
    0 1
    1 0
    1
    0 0
    
    예상 출력
    4
    3
    0