結果
| 問題 | No.132 点と平面との距離 | 
| コンテスト | |
| ユーザー |  lam6er | 
| 提出日時 | 2025-03-20 18:49:48 | 
| 言語 | PyPy3 (7.3.15) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 315 ms / 5,000 ms | 
| コード長 | 1,377 bytes | 
| コンパイル時間 | 177 ms | 
| コンパイル使用メモリ | 82,532 KB | 
| 実行使用メモリ | 76,256 KB | 
| 最終ジャッジ日時 | 2025-03-20 18:51:53 | 
| 合計ジャッジ時間 | 1,077 ms | 
| ジャッジサーバーID (参考情報) | judge4 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 3 | 
ソースコード
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()
            
            
            
        