結果

問題 No.132 点と平面との距離
ユーザー lam6er
提出日時 2025-03-20 21:16:36
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 333 ms / 5,000 ms
コード長 1,377 bytes
コンパイル時間 174 ms
コンパイル使用メモリ 82,440 KB
実行使用メモリ 76,164 KB
最終ジャッジ日時 2025-03-20 21:17:20
合計ジャッジ時間 1,329 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 3
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

import sys
import math
from itertools import combinations
def main():
input = sys.stdin.read().split()
ptr = 0
N = int(input[ptr])
ptr += 1
Px = float(input[ptr])
Py = float(input[ptr+1])
Pz = float(input[ptr+2])
ptr += 3
x, y, z = [], [], []
for _ in range(N):
xi = float(input[ptr])
yi = float(input[ptr+1])
zi = float(input[ptr+2])
x.append(xi)
y.append(yi)
z.append(zi)
ptr += 3
# Precompute AP vectors for all points
APx = [Px - xi for xi in x]
APy = [Py - yi for yi in y]
APz = [Pz - zi for zi in z]
sum_dist = 0.0
for i, j, k in combinations(range(N), 3):
# Vectors AB and AC
ABx = x[j] - x[i]
ABy = y[j] - y[i]
ABz = z[j] - z[i]
ACx = x[k] - x[i]
ACy = y[k] - y[i]
ACz = z[k] - z[i]
# Cross product (normal vector)
a = ABy * ACz - ABz * ACy
b = ABz * ACx - ABx * ACz
c = ABx * ACy - ABy * ACx
# AP vector for point i
apx = APx[i]
apy = APy[i]
apz = APz[i]
# Dot product
dot = a * apx + b * apy + c * apz
numerator = abs(dot)
denominator = math.sqrt(a*a + b*b + c*c)
sum_dist += numerator / denominator
print("{0:.15f}".format(sum_dist))
if __name__ == '__main__':
main()
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0