AT_arc018_2 [ARC018B] 格子点と整数
Description
[problemUrl]: https://atcoder.jp/contests/arc018/tasks/arc018_2
諸君、私は整数が好きだ。
私は格子点が好きだ。
私は面積が好きだ。
私は三角形が好きだ。
私は座標平面上の、頂点が全て格子点上にある、面積が整数の三角形が大好きだ。
格子点の集合をみたとき、その中の任意の $ 3 $ 点を選んで作ることができる面積が整数の三角形の個数を数えるときは心が踊る。
心が踊るが、格子点が多いと数えるのが面倒臭い。
ぜひ有能なプログラマーである諸君に私の代わりに数えてほしい。
$ N $ 個の格子点を与えるので、その中の任意の $ 3 $ 点を選んで作ることができる、面積が整数の三角形の個数を数えるプログラムを作って欲しい。面積が $ 0 $ の三角形は三角形とは認めん!
ちなみに、格子点というのは座標平面上の点 $ (x,y) $ のうち $ x $ も $ y $ も整数である点のことである。
入力は以下の形式で標準入力から与えられる。
> $ N $ $ x_1 $ $ y_1 $ $ x_2 $ $ y_2 $ : $ x_N $ $ y_N $
- $ 1 $ 行目には、格子点の個数を表す整数 $ N\ (3\ ≦\ N\ ≦\ 100) $ が与えられる。
- $ 2 $ 行目から $ N $ 行では、2つの整数が空白区切りで与えられる。 $ (x_i,\ y_i) (1\ ≦\ x_i,\ y_i\ ≦\ 10^9) $ は $ i $ 番目の格子点の位置である。同じ格子点が二度与えられることはない。( $ i\ \neq\ j $ ならば $ (x_i,\ y_i)\ \neq\ (x_j,\ y_j) $ )
$ N $ 個の格子点のうち $ 3 $ つを選んで作ることができる面積が正の整数である三角形の個数を一行で出力せよ。
なお、出力の最後には改行を入れること。 ```
3 1 1 1 2 3 1 ``` ```1 ``` $ (1,1),\ (1,\ 2),\ (3,\ 1) $ の面積が $ 1 $ の三角形が一つだけ作れる。 ```3 1 1 1 2 2 1 ``` ```0 ``` 三角形 $ (1,\ 1)\ (1,\ 2)\ (2,\ 1) $ の面積は $ 0.5 $ で整数ではない。これ以外に三角形は作ることができない。 ```3 1 1 2 2 3 3 ``` ```0 ``` $ 3 $ 点は一直線上に並ぶので、三角形を作ることができない。 ```8 3 1 4 1 5 9 2 6 5 3 5 8 9 7 9 3 ``` ```38 ```
Input Format
N/A
Output Format
N/A