結果
問題 | No.132 点と平面との距離 |
ユーザー | ふう |
提出日時 | 2015-01-21 23:08:10 |
言語 | C++11 (gcc 11.4.0) |
結果 |
AC
|
実行時間 | 387 ms / 5,000 ms |
コード長 | 1,496 bytes |
コンパイル時間 | 1,014 ms |
コンパイル使用メモリ | 87,904 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-06-22 23:34:07 |
合計ジャッジ時間 | 1,597 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 15 ms
5,248 KB |
testcase_01 | AC | 117 ms
5,376 KB |
testcase_02 | AC | 387 ms
5,376 KB |
ソースコード
#define _CRT_SECURE_NO_WARNINGS #define _USE_MATH_DEFINES #include <iostream> #include <map> #include <list> #include <cstdio> #include <cmath> #include <cstring> #include <string> #include <vector> #include <algorithm> #include <utility> #include <queue> #include <iomanip> #define INF 1050000000 #define SIZE 300 #define MOD 1000000007 using namespace std; /* 平面と点との距離 */ double distance(vector<double> P, vector<double> Q1, vector<double> Q2, vector<double> Q3) { double res = 0.0; double a, b, c, d; a = (Q2[1] - Q1[1]) * (Q3[2] - Q1[2]) - (Q3[1] - Q1[1]) * (Q2[2] - Q1[2]); b = (Q2[2] - Q1[2]) * (Q3[0] - Q1[0]) - (Q3[2] - Q1[2]) * (Q2[0] - Q1[0]); c = (Q2[0] - Q1[0]) * (Q3[1] - Q1[1]) - (Q3[0] - Q1[0]) * (Q2[1] - Q1[1]); d = - a * Q1[0] - b * Q1[1] - c * Q1[2]; res += fabs(a * P[0] + b * P[1] + c * P[2] + d) / sqrt(a * a + b * b + c * c); return (res); } int main(void) { int n; vector<double> P; double x, y, z; vector<double> Q[SIZE]; double res = 0.0; cin >> n; cin >> x >> y >> z; P.push_back(x); P.push_back(y); P.push_back(z); for (int i = 0; i < n; i++) { cin >> x >> y >> z; Q[i].push_back(x); Q[i].push_back(y); Q[i].push_back(z); } for (int i = 0; i < n - 2; i++) { for (int j = i + 1; j < n - 1; j++) { for (int k = j + 1; k < n; k++) { res += distance(P, Q[i], Q[j], Q[k]); } } } cout << fixed << setprecision(10) << res << endl; return (0); } /*for (int i = 0; i < n; i++) { }*/