結果
問題 | No.2632 Center of Three Points in Lp Norm |
ユーザー |
![]() |
提出日時 | 2024-02-16 22:41:59 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,776 bytes |
コンパイル時間 | 217 ms |
コンパイル使用メモリ | 12,928 KB |
実行使用メモリ | 11,136 KB |
最終ジャッジ日時 | 2024-09-28 21:18:46 |
合計ジャッジ時間 | 4,924 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 26 WA * 8 |
ソースコード
import sysinput = lambda :sys.stdin.readline()[:-1]ni = lambda :int(input())na = lambda :list(map(int,input().split()))yes = lambda :print("yes");Yes = lambda :print("Yes")no = lambda :print("no");No = lambda :print("No")#######################################################################def sub(a, b):return (a[0] - b[0], a[1] - b[1])def norm(a) -> float:x = abs(a[0])y = abs(a[1])return x ** p + y ** pdef dist(a, b):return norm(sub(a, b))p = float(input())a = na()b = na()c = na()def f(a, b, c):flag = 0if a[0] == b[0]:a = (a[1], a[0])b = (b[1], b[0])c = (c[1], c[0])flag = 1uy = 10**6ly = -10**6if a[0] > b[0]:right = aleft = belse:right = bleft = adef f(left, right, my):ux = 10**10lx = -10**10for _ in range(100):mx = (ux + lx) / 2if dist(left, (mx, my)) > dist(right, (mx, my)):ux = mxelse:lx = mxreturn uxx = f(left, right, uy)if dist(c, (x, uy)) < dist(left, (x, uy)):up = cdown = leftelse:up = leftdown = cfor _ in range(100):my = (uy + ly) / 2x = f(left, right, my)if dist(up, (x, my)) < dist(down, (x, my)):uy = myelse:ly = myox, oy = f(left, right, uy), uyD = max(dist(a, (ox, oy)) , dist(b, (ox, oy)) , dist(c, (ox, oy)))if flag:ox, oy = oy, oxreturn D, ox, oyans, OX, OY = 10**18, 0, 0for _ in range(3):D, ox, oy = f(a, b, c)#print(D, ox, oy)if D < ans:ans = DOX, OY = ox, oya,b,c = b,c,aprint(OX, OY)