AtCoder Beginner Contest 033 D : 三角形の分類

abc033.contest.atcoder.jp

当初の方針

幾何は苦手意識・・・。

サンプルみたいに、直角と鋭角の数をカウントして、
全体から引けばいい?(うまくだまされました)

グリッド上に配置されるから、直角になるには、
x座標かy座標かが一緒になる?
(大嘘。(0,0),(1,1),(2,0)がある)

ソートしてあげれば良いことがありそう。
x座標を基準にソートか?(違う)

諦め

解法を見て

角度をもとにソートする。なるほど。

鋭角は三角形の角度の中で必ず一つ存在するが、
鈍角は、鈍角三角形の中で1つしか存在しない。
なのでこれを利用して鈍角の個数をカウントしていけばいい、
ということだろう。
その途中道で、直角三角形もカウント。

しゃくとり法だとバグらせそうなので、2分探索で実装。

角度を求める関数を自作する → 上手く求まらないケースがあるようなのでatan2に変更
(そんな関数すら作れないのも問題ですが・・・)

サンプルが合う。提出 → WA。なんでじゃ~~~

いろいろな人のソースを見ながらやってみるが、
一向にWAが取れない。

注意深く見てみれば、同じかどうかの判定を自分は1e-6でやっていて、
他の人は1e-9だった。

1e-9に訂正して提出 → AC。ふいー。

Submission #941634 - AtCoder Beginner Contest 033 | AtCoder

こういうのは、最大ケースみたいなので、チェックしてあげる必要があるなあ。
気を付けないと。