結果
問題 | No.168 ものさし |
ユーザー | るこーそー |
提出日時 | 2024-09-20 09:28:18 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,210 ms / 2,000 ms |
コード長 | 1,297 bytes |
コンパイル時間 | 237 ms |
コンパイル使用メモリ | 81,916 KB |
実行使用メモリ | 79,872 KB |
最終ジャッジ日時 | 2024-09-20 09:28:31 |
合計ジャッジ時間 | 11,491 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 412 ms
78,116 KB |
testcase_01 | AC | 35 ms
53,868 KB |
testcase_02 | AC | 33 ms
52,336 KB |
testcase_03 | AC | 35 ms
53,268 KB |
testcase_04 | AC | 35 ms
54,104 KB |
testcase_05 | AC | 35 ms
52,952 KB |
testcase_06 | AC | 44 ms
61,480 KB |
testcase_07 | AC | 37 ms
52,780 KB |
testcase_08 | AC | 40 ms
53,608 KB |
testcase_09 | AC | 145 ms
77,456 KB |
testcase_10 | AC | 194 ms
77,676 KB |
testcase_11 | AC | 397 ms
78,580 KB |
testcase_12 | AC | 910 ms
78,716 KB |
testcase_13 | AC | 1,210 ms
78,100 KB |
testcase_14 | AC | 1,196 ms
79,092 KB |
testcase_15 | AC | 38 ms
53,620 KB |
testcase_16 | AC | 137 ms
76,796 KB |
testcase_17 | AC | 171 ms
77,320 KB |
testcase_18 | AC | 220 ms
77,424 KB |
testcase_19 | AC | 1,151 ms
78,848 KB |
testcase_20 | AC | 1,174 ms
78,632 KB |
testcase_21 | AC | 1,208 ms
78,480 KB |
testcase_22 | AC | 1,196 ms
79,872 KB |
ソースコード
class UnionFind: def __init__(self,n): self.n=n self.parent=[-1]*n def root(self,x): if self.parent[x]<0:return x self.parent[x]=self.root(self.parent[x]) return self.parent[x] def merge(self,x,y): x,y=self.root(x),self.root(y) if x==y:return if -self.parent[x]<-self.parent[y]: x,y=y,x self.parent[x]+=self.parent[y] self.parent[y]=x def same(self,x,y): return self.root(x)==self.root(y) def size(self,x): return -self.parent[self.root(x)] def groups(self): members=[[] for _ in range(self.n)] for v in range(self.n): members[self.root(v)].append(v) res=[] for member in members: if member:res.append(member) return res n=int(input()) xy=[list(map(int,input().split())) for _ in range(n)] def dist(a,b): return abs(a[0]-b[0])**2+abs(a[1]-b[1])**2 def check(x): uf=UnionFind(n) for i in range(n-1): for j in range(i+1,n): if dist(xy[i],xy[j])<=x**2: uf.merge(i,j) return uf.same(0,n-1) ng,ok=-1,10**9 while ok-ng>1: mid=(ok+ng)//2 if check(10*mid): ok=mid else: ng=mid print(10*ok)