はじめに
@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に詳しくなりました。