結果
問題 | No.132 点と平面との距離 |
ユーザー |
![]() |
提出日時 | 2016-01-28 01:01:33 |
言語 | C++11 (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 36 ms / 5,000 ms |
コード長 | 1,409 bytes |
コンパイル時間 | 2,132 ms |
コンパイル使用メモリ | 162,668 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-09-21 17:44:58 |
合計ジャッジ時間 | 2,077 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 3 |
ソースコード
#include "bits/stdc++.h"#define rep(i,n) for(int i = 0;i < n;i++)#define REP(i,n,k) for(int i = n;i < k;i++)#define P(p) cout << (p) << endl;#define sP(p) cout << setprecision(15) << fixed << p << endl;#define pi 3.1415926535#define IINF 1e9#define LINF 1e18#define vi vector<int>#define mp make_pair#define max(a,b,c) max(a,max(b,c))#define min(a,b,c) min(a,min(b,c))using namespace std;typedef long long ll;typedef unsigned long long ull;int dx[] = { 0, 1, 0, -1 };int dy[] = { -1, 0, 1, 0 };unsigned long long sttoi(std::string str) {unsigned long long ret;std::stringstream ss; ss << str;ss >> ret;return ret;}ull gcd(ull a, ull b){if (b > a)swap(a, b);if (b == 0) return a;return gcd(b, a%b);}void solve() {int n;cin >> n;double p1,p2,p3;cin >> p1 >> p2 >> p3;double sum = 0.0000000000000000;vector<double> X(400),Y(400),Z(400);rep(i,n)cin >> X[i] >> Y[i] >> Z[i];//i = A,j = B,k = Crep(i,n)REP(j,i+1,n)REP(k,j+1,n){double ax,ay,az,bx,by,bz,hx,hy,hz;ax = X[j]-X[i];ay = Y[j]-Y[i];az = Z[j]-Z[i];bx = X[k]-X[i];by = Y[k]-Y[i];bz = Z[k]-Z[i];hx = ay*bz-by*az;hy = az*bx-ax*bz;hz = ax*by-ay*bx;double d = -(hx*X[i]+hy*Y[i]+hz*Z[i]);sum += abs(hx*p1+hy*p2+hz*p3+d)/sqrt(pow(hx,2)+pow(hy,2)+pow(hz,2));}sP(sum);}int main() {solve();return 0;}