POJ 2624 - 4th Point
http://poj.org/problem?id=2624
概要
平行四辺形の2つの隣接する辺の両端の座標が与えられるので,残りの4つ目の頂点の座標を答える.
制約
- -10000 <= 座標の値 <= 10000
- 出力は 10^-3 の精度
解法
与えられた4つの座標のどれとどれが一致しているか判定して,それぞれの場合について求める.
poj/2624.cc1 #include <iostream> 2 #include <cstdio> 3 #include <complex> 4 using namespace std; 5 typedef complex<double> P; 6 static const double EPS = 1e-4; 7 static const P P_EPS = P(EPS, EPS); 8 9 int main() 10 { 11 P a, b, c, d; 12 while (cin >> a.real() >> a.imag() >> b.real() >> b.imag() 13 >> c.real() >> c.imag() >> d.real() >> d.imag()) { 14 15 if (abs(a-b) < EPS) { 16 // a = c, b = d, c = a&b 17 b = c; 18 c = a; 19 b = d; 20 a = b; 21 } else if (abs(b-c) < EPS) { 22 // a=a, b=d, c=b&c 23 b = d; 24 } else if (abs(c-d) < EPS) { 25 // a=a, b=b, c=c&d 26 } else if (abs(a-c) < EPS) { 27 // a=d, b=b, c=a&c 28 a = d; 29 } else if (abs(b-d) < EPS) { 30 // a=a, b=c, c=b&d 31 b = c; 32 c = d; 33 } else { 34 // a=c, b=b, c=a&d 35 a = c; 36 c = d; 37 } 38 39 P ans = a + b -c; 40 printf("%.3f %.3f\n", ans.real(), ans.imag()); 41 } 42 return 0; 43 }