結果
問題 | No.33 アメーバがたくさん |
ユーザー |
![]() |
提出日時 | 2022-04-15 01:56:02 |
言語 | Ruby (3.4.1) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,116 bytes |
コンパイル時間 | 428 ms |
コンパイル使用メモリ | 7,424 KB |
実行使用メモリ | 12,288 KB |
最終ジャッジ日時 | 2024-12-24 13:14:56 |
合計ジャッジ時間 | 2,447 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 6 WA * 5 |
コンパイルメッセージ
Syntax OK
ソースコード
class UnionFinddef initialize(n)@size = Array.new(n, 1)@rank = Array.new(n, 0)@parent = [](0..n).each do |i|@parent[i] = iendenddef find(x)if @parent[x] == xxelse@parent[x] = find(@parent[x])endenddef unite(x, y)x = find(x)y = find(y)return if x == yif @rank[x] < @rank[y]@parent[x] = y@size[y] += @size[x]else@parent[y] = x@size[x] += @size[y]@rank[x] += 1 if @rank[x] == @rank[y]endenddef same?(x, y)find(x) == find(y)enddef size(x)@size[find(x)]endendN, D, T = gets.split.map(&:to_i)X = gets.split.map(&:to_i)uf = UnionFind.new(N)0.upto(N - 2) do |i|(i + 1).upto(N - 1) do |j|dist = (X[i] - X[j]).absif dist % D == 0 && dist / D <= Tuf.unite(i, j)endendendpairs = Hash.new { |h, k| h[k] = [] }N.times do |i|pa = uf.find(i)pairs[pa] << iendans = 0pairs.each do |_, ids|min, max = ids.map { |id| X[id] }.minmaxcnt = ((max + T * D) - (min - T * D)) / D + 1ans += cntendputs ans