View problem - 별자리 2 (JOI14_constellation2)

Time limitMemory limit# of submissions# of submitted usersSolved #Accepted user ratio
9000 ms256 MiB42252392.00%

JOI군과 IOI군은 친구 사이입니다. 어느 날 JOI군은 IOI군과 함께 산 위에 있는 전망대에서 천체 관측을 하기로 했습니다.

전망대에서는 NN개의 별을 관측할 수 있습니다. 각각의 별에는 1 이상 NN 이하의 자연수 번호가 붙어 있으며, 각각의 별들은 빨강색, 파랑색, 노랑색 중 하나의 색을 띱니다.

이 전망대에서 관측된 별은 좌표 평면 상의 점으로 표시됩니다. 이 좌표평면에서 각 ii (1iN1 \le i \le N)에 대응하는 점은 Pi(Xi,Yi)P_{i} (X_{i}, Y_{i})입니다. 좌표평면 상의 점 P1,,PNP_{1}, \cdots, P_{N}은 그 위치가 서로 다르며, 어떤 세 점도 같은 직선 위에 있지 않습니다.

JOI군과 IOI군은 JOIOI 자리라는 별자리를 만들기로 했습니다. 먼저 두 사람은 빨강색, 파랑색, 노랑색이 세 개의 별을 연결한 삼각형을 사용하기로 합니다. 이러한 삼각형을 좋은 삼각형이라고 부릅니다.

두 사람은 다음 조건을 만족하는 좋은 삼각형 한 쌍 (순서는 관계 없습니다)을 JOIOI 자리의 후보로 두기로 합니다.

  • 2개의 좋은 삼각형 (삼각형의 둘레 및 내부)에 공유하는 점이 없습니다. 즉 두 개의 좋은 삼각형이 겹치거나 한 삼각형이 다른 삼각형에 포함된 경우는 없습니다.

JOI군과 IOI군은 JOIOI자리의 후보로 간주되는 삼각형이 몇 개인지 셀 수 있습니다. 그러나 JOIOI 자리의 후보를 구성하는 6개의 별이 같아도 삼각형으로 묶는 방법이 다르다면 다른 후보로 취급합니다.

해야 할 일

전망대에서 관측된 별의 정보가 주어질 때, JOIOI자리의 후보 수를 출력하는 프로그램을 작성하세요.

입력 형식

표준 입력으로 아래 데이터를 받습니다:

  • 첫 번째 줄에는 정수 NN이 주어집니다. 이것은 전망대에서 관측된 별의 개수가 NN임을 나타냅니다.
  • NN개 줄이 주어집니다. 이 중 ii번째 줄 (1iN1 \le i \le N)에는 세 개의 정수 Xi,Yi,CiX_{i}, Y_{i}, C_{i}가 공백을 사이로 두고 주어집니다. 이것은 ii번 별의 좌표가 Pi(Xi,Yi)P_{i} (X_{i}, Y_{i})임을 나타내고, CiC_{i}ii번 별의 색을 나타냅니다. ii번 별의 색은 CiC_{i}가 0이면 빨강색, 1이면 파랑색, 2이면 노랑색입니다.

출력 형식

표준 출력에 JOIOI 자리의 후보의 수를 출력합니다.

제약 조건

모든 입력은 아래 조건을 만족합니다:

  • 6N3,0006 \le N \le 3,000
  • 100,000Xi100,000-100,000 \le X_{i} \le 100,000
  • 100,000Yi100,000-100,000 \le Y_{i} \le 100,000
  • 0Ci20 \le C_{i} \le 2
  • 어떤 색의 별도 1개 이상 존재합니다.
  • PiPjP_{i} \neq P_{j} (1i<jN1 \le i < j \le N)
  • Pi,Pj,PkP_{i}, P_{j}, P_{k}는 같은 직선 상에 있지 않습니다. (1i<j<kN1 \le i < j < k\le N)

서브태스크

서브태스크 1 [15점]

  • N30N \le 30

서브태스크 2 [40점]

  • N300N \le 300

서브태스크 3 [45점]

추가 제약 조건은 없습니다.

입출력 예제

입력

7
0 0 0
2 0 1
1 2 2
-2 1 0
-2 -3 0
0 -2 1
2 -2 2

출력

4

이 입력 예제에서 별들은 아래와 같이 배치됩니다. 이 그림에서 빨간색 별은 둥근 점으로, 파랑색 별은 마름모 형태의 점으로, 노랑색 별은 삼각형 모양의 점으로 나타냅니다.

이 입력 예제에서 JOIOI 자리의 후보는 다음 네 가지가 있습니다.

입력

8
16 0 0
17 0 0
0 7 2
0 -7 2
-1 -1 1
-1 1 2
-6 4 1
-6 -4 1

출력

12

입력

21
1 20 0
4 20 0
0 22 0
5 22 0
6 25 0
8 25 0
4 26 0
11 11 1
7 12 1
14 13 1
8 15 1
15 16 1
11 17 1
18 0 2
13 2 2
16 2 2
19 4 2
18 6 2
21 8 2
24 8 2
19 10 2

출력

7748