問題
https://atcoder.jp/contests/abc002/tasks/abc002_3 (新しいタブで開く)
問題文
がこの順に与えられる。 の面積は?
制約
- は同一直線上にない
- 絶対誤差 まで許容される
サンプル
I/O 1
1 0 3 0 2 5
5.0
I/O 2
-1 -2 3 4 5 6
2.0
I/O 3
298 520 903 520 4 663
43257.5
考察
まあいろんなやり方あるけど、ヘロンの公式を知っていますか? (ヒントがあったけどガン無視)
ヘロンの公式
において、 とする (順番は気にしないけど、3 辺の長さ)。
このとき、 として、 が成り立つ。
証明は略。
コード
https://atcoder.jp/contests/abc002/submissions/27501700 (新しいタブで開く)
double sqr(double x) { return x * x; }
int main() {
double ax, ay, bx, by, cx, cy;
cin >> ax >> ay >> bx >> by >> cx >> cy;
double a = sqrt(sqr(ax - bx) + sqr(ay - by));
double b = sqrt(sqr(bx - cx) + sqr(by - cy));
double c = sqrt(sqr(cx - ax) + sqr(cy - ay));
double s = (a + b + c) / 2;
cout << fixed << setprecision(5) << sqrt(s * (s - a) * (s - b) * (s - c)) << endl;
}