結果
問題 | No.622 点と三角柱の内外判定 |
ユーザー | Sebastian King |
提出日時 | 2017-12-22 00:18:20 |
言語 | C++11 (gcc 11.4.0) |
結果 |
AC
|
実行時間 | 2 ms / 1,500 ms |
コード長 | 2,358 bytes |
コンパイル時間 | 1,546 ms |
コンパイル使用メモリ | 161,100 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-05-10 02:44:26 |
合計ジャッジ時間 | 2,608 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
5,248 KB |
testcase_01 | AC | 2 ms
5,376 KB |
testcase_02 | AC | 2 ms
5,376 KB |
testcase_03 | AC | 2 ms
5,376 KB |
testcase_04 | AC | 2 ms
5,376 KB |
testcase_05 | AC | 2 ms
5,376 KB |
testcase_06 | AC | 2 ms
5,376 KB |
testcase_07 | AC | 2 ms
5,376 KB |
testcase_08 | AC | 2 ms
5,376 KB |
testcase_09 | AC | 2 ms
5,376 KB |
testcase_10 | AC | 2 ms
5,376 KB |
testcase_11 | AC | 2 ms
5,376 KB |
testcase_12 | AC | 2 ms
5,376 KB |
testcase_13 | AC | 2 ms
5,376 KB |
testcase_14 | AC | 2 ms
5,376 KB |
testcase_15 | AC | 2 ms
5,376 KB |
testcase_16 | AC | 2 ms
5,376 KB |
testcase_17 | AC | 2 ms
5,376 KB |
testcase_18 | AC | 2 ms
5,376 KB |
testcase_19 | AC | 2 ms
5,376 KB |
testcase_20 | AC | 2 ms
5,376 KB |
testcase_21 | AC | 2 ms
5,376 KB |
testcase_22 | AC | 2 ms
5,376 KB |
testcase_23 | AC | 2 ms
5,376 KB |
testcase_24 | AC | 2 ms
5,376 KB |
testcase_25 | AC | 1 ms
5,376 KB |
testcase_26 | AC | 2 ms
5,376 KB |
testcase_27 | AC | 2 ms
5,376 KB |
testcase_28 | AC | 2 ms
5,376 KB |
testcase_29 | AC | 2 ms
5,376 KB |
testcase_30 | AC | 2 ms
5,376 KB |
testcase_31 | AC | 2 ms
5,376 KB |
ソースコード
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> PII; const int MM = 1e9 + 7; const double eps = 1e-8; const int MAXN = 2e6 + 10; int n, m; void prework(){ } void read(){ } struct Pt3{ double x, y, z; }; inline double sqr(double x){ return x * x; } inline Pt3 operator - (const Pt3 & a){ return (Pt3){ -a.x, -a.y, -a.z}; } inline Pt3 operator + (const Pt3 & a, const Pt3 & b){ return (Pt3){a.x + b.x, a.y + b.y, a.z + b.z}; } inline Pt3 operator - (const Pt3 & a, const Pt3 & b){ return (Pt3){a.x - b.x, a.y - b.y, a.z - b.z}; } inline Pt3 operator * (const Pt3 & a, double u){ return (Pt3){a.x * u, a.y * u, a.z * u}; } inline double operator % (const Pt3 & a, const Pt3 & b){ return a.x * b.x + a.y * b.y + a.z * b.z; } inline Pt3 operator * (const Pt3 & a, const Pt3 & b){ return (Pt3){ a.y * b.z - a.z * b.y, a.z * b.x - a.x * b.z, a.x * b.y - a.y * b.x }; } int cmp_side(const Pt3 & a, const Pt3 & b){ return a.y * b.z - a.z * b.y || a.z * b.x - a.x * b.z || a.x * b.y - a.y * b.x; } ll cmp_axis(const Pt3 & a, const Pt3 & b){ ll x = a.x * b.x, y = a.y * b.y, z = a.z * b.z; return x + y + z; } double len(const Pt3 & a){ return sqrt(sqr(a.x) + sqr(a.y) + sqr(a.z)); } Pt3 a[4]; /* int sgn(const Pt3 & a, const Pt3 & b){ double tmp = len(a * b); if (fabs(tmp) < eps) return 0; else return (tmp < 0 ? -1 : 1); }*/ double area(const Pt3 & a, const Pt3 & b, const Pt3 & c){ return len((b-a)*(c-a)); } double eql(double a, double b){ return fabs(a-b)>=eps+fabs(a)*eps?a-b:0; } void solve(int casi){ // cout << "Case #" << casi << ": "; for (int i = 0; i < 4; i++) cin >> a[i].x >> a[i].y >> a[i].z; Pt3 AB = a[1] - a[0]; Pt3 AC = a[2] - a[0]; Pt3 Nm = AB * AC; double h = (Nm % (a[0] - a[3])) * 1.0 / len(Nm); Nm = Nm * (h / len(Nm)); a[3] = a[3] + Nm; /* int sgn1 = sgn(a[0] - a[3], a[1] - a[3]); int sgn2 = sgn(a[1] - a[3], a[2] - a[3]); int sgn3 = sgn(a[2] - a[3], a[0] - a[3]);*/ //if (sgn1 == sgn2 && sgn2 == sgn3) if (0==eql(area(a[0], a[1], a[2]), area(a[0],a[1],a[3])+area(a[0],a[2],a[3])+area(a[1],a[2],a[3]))) puts("YES"); else puts("NO"); } void printans(){ } int main(){ // std::ios::sync_with_stdio(false); prework(); int T = 1; // cin>>T; for(int i = 1; i <= T; i++){ read(); solve(i); printans(); } return 0; }