はじめに
@u2dayo さんのコードを写経していましたところSet
を使用されていました。
普段はHash
で代用していますが、Set
の使用方法の健忘録とCrystallizer2
の更新を行いました。
C問題『Poem Online Judge』
Ruby版
require "set"
n = gets.to_i
seen = Set.new
max_t = -1
ans = 0
(1...n+1).each do |i|
s, t = gets.split
next if seen.include?(s)
seen << s
t = t.to_i
if max_t < t
max_t = t
ans = i
end
end
puts ans
Ruby
ですとrequire "set"
しないといけないです。
crystal版
require "set"
n = read_line.to_i
seen = Set(String).new
max_t = -1
ans = 0
(1...n+1).each do |i|
s, t = read_line.split
next if seen.includes?(s)
seen << s
t = t.to_i
if max_t < t
max_t = t
ans = i
end
end
puts ans
crystal
ではrequire "set"
は本来不要ですが、あっても動作するようなので、とりあえずそのままとしています。
- seen = Set(Int32).new
+ seen = Set(String).new
この部分はInt32
に決め打ちをしていますので、問題に合わせ修正する必要があります。
Ruby | crystal | |
---|---|---|
実行時間(ms) | 183 | 51 |
まとめ
crystal
のSet
に詳しくなりました。