結果
問題 | No.132 点と平面との距離 |
ユーザー |
![]() |
提出日時 | 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 |
ソースコード
import sysimport mathfrom itertools import combinationsdef main():input = sys.stdin.read().split()ptr = 0N = int(input[ptr])ptr += 1Px = float(input[ptr])Py = float(input[ptr+1])Pz = float(input[ptr+2])ptr += 3x, 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 pointsAPx = [Px - xi for xi in x]APy = [Py - yi for yi in y]APz = [Pz - zi for zi in z]sum_dist = 0.0for i, j, k in combinations(range(N), 3):# Vectors AB and ACABx = 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 * ACyb = ABz * ACx - ABx * ACzc = ABx * ACy - ABy * ACx# AP vector for point iapx = APx[i]apy = APy[i]apz = APz[i]# Dot productdot = a * apx + b * apy + c * apznumerator = abs(dot)denominator = math.sqrt(a*a + b*b + c*c)sum_dist += numerator / denominatorprint("{0:.15f}".format(sum_dist))if __name__ == '__main__':main()