結果
問題 | No.19 ステージの選択 |
ユーザー | 6soukiti29 |
提出日時 | 2017-07-26 19:47:11 |
言語 | Nim (2.0.2) |
結果 |
AC
|
実行時間 | 2 ms / 5,000 ms |
コード長 | 1,466 bytes |
コンパイル時間 | 3,613 ms |
コンパイル使用メモリ | 67,840 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-06-30 01:49:01 |
合計ジャッジ時間 | 4,611 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
5,248 KB |
testcase_01 | AC | 2 ms
5,376 KB |
testcase_02 | AC | 2 ms
5,376 KB |
testcase_03 | AC | 1 ms
5,376 KB |
testcase_04 | AC | 2 ms
5,376 KB |
testcase_05 | AC | 1 ms
5,376 KB |
testcase_06 | AC | 2 ms
5,376 KB |
testcase_07 | AC | 2 ms
5,376 KB |
testcase_08 | AC | 2 ms
5,376 KB |
testcase_09 | AC | 2 ms
5,376 KB |
testcase_10 | AC | 1 ms
5,376 KB |
testcase_11 | AC | 2 ms
5,376 KB |
testcase_12 | AC | 2 ms
5,376 KB |
testcase_13 | AC | 2 ms
5,376 KB |
testcase_14 | AC | 2 ms
5,376 KB |
testcase_15 | AC | 1 ms
5,376 KB |
testcase_16 | AC | 2 ms
5,376 KB |
testcase_17 | AC | 1 ms
5,376 KB |
testcase_18 | AC | 2 ms
5,376 KB |
testcase_19 | AC | 2 ms
5,376 KB |
testcase_20 | AC | 1 ms
5,376 KB |
testcase_21 | AC | 2 ms
5,376 KB |
testcase_22 | AC | 2 ms
5,376 KB |
testcase_23 | AC | 2 ms
5,376 KB |
コンパイルメッセージ
/home/judge/data/code/Main.nim(1, 35) Warning: imported and not used: 'algorithm' [UnusedImport]
ソースコード
import sequtils,strutils,strscans,algorithm,math type unionfindtree[I : static[int]] = array[I,int] proc Init(U : var unionfindtree)= for j in 0..<U.high: U[j] = j proc find(U : unionfindtree; a : int, b :int): bool= var s = a t = b while s != U[s]: s = U[s] while t != U[t]: t = U[t] return s == t proc union(U : var unionfindtree; a : int ; b : int)= if U.find(a,b): return var s = a t = b t2 : int while s != U[s]: s = U[s] while t != U[t]: t2 = U[t] U[t] = s t = t2 U[t] = s proc root(U : unionfindtree, a :int):int= var s = a while s != U[s]: s = U[s] return s type item = tuple[id : int,level : float,S : int] var N = stdin.readline.parseInt oya = newSeqWith(N,-1) Items = newSeq[item](0) L : float S : int ans = 0.0 p : item line : string s : set[int8] uft : unionfindtree[101] uft.Init for i in 0..<N: line = stdin.readline discard scanf(line,"$f $i",L,S) p = (i,L,S - 1) uft.union(S - 1,i) Items.add(p) for i in 0..<N: s.incl(uft.root(i).int8) for i in s: var j = i.int var minoya = 100000.0 while oya[j] == -1: oya[j] = i.int minoya = min(minoya,Items[j].level) j = Items[j].S ans += minoya / 2 for t in Items: ans += t.level / 2 echo round(ans,1)