問題
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; }