AtCoder Beginner Contest 033

D - 三角形の分類


Time limit時間制限 : 7sec / Memory limitメモリ制限 : 256MB

問題文

2 次元平面上の N 個の点が与えられます。 i 番目の点の座標は (x_i, y_i) です。ただし、このうちのどの 3 点も同一直線上にありません。

N 点のうち 3 点を選ぶことによってこの 3 点を頂点とした三角形を作ることを考えます。三角形は全部で N * (N - 1) * (N - 2) / 6 個できます。 これらの三角形のうち、鋭角三角形の個数、直角三角形の個数、鈍角三角形の個数を求めてください。

ただし、鋭角三角形とは、3 つの角が全て 90° より小さい三角形で、直角三角形とは、ある 1 つの角が 90° である三角形で、 鈍角三角形とは、ある 1 つの角が 90° より大きい三角形のことをいいます。


入力

入力は以下の形式で標準入力から与えられる。

N
x_1 y_1
x_2 y_2
:
x_N y_N
  • 1 行目には、点の個数を表す整数 N (3 ≦ N ≦ 2,000) が与えられる。
  • 2 行目から N 行には、点の座標に関する情報が与えられる。このうち i 行目には、整数 x_i (-10,000 ≦ x_i ≦ 10,000)y_i (-10,000 ≦ y_i ≦ 10,000) が空白区切りで与えられる。
  • N 個の点は全て異なる。
  • N 個の点のうち、異なる 3 点が同一直線上にあることはない。

部分点

この問題には部分点が設定されている。

  • N ≦ 100 を満たすデータセットに正解した場合、部分点として 30 点が与えられる。

出力

鋭角三角形の個数、直角三角形の個数、鈍角三角形の個数をこの順に空白区切りで 1 行に出力せよ。

出力の末尾にも改行を入れること。


入力例 1

5
1 3
2 2
3 2
4 1
4 3

出力例 1

1 2 7
  • 2 番目の点、4 番目の点、5 番目の点を選ぶと、鋭角三角形ができます。
  • 1 番目の点、4 番目の点、5 番目の点を選ぶと、直角三角形ができます。
  • 3 番目の点、4 番目の点、5 番目の点を選ぶと、直角三角形ができます。
  • その他の 7 通りの選び方では、全て鈍角三角形ができます。

入力例 2

9
2 0
1 1
3 1
1 2
5 2
0 3
4 3
2 4
4 4

出力例 2

27 14 43

Submit提出する