結果
| 問題 |
No.78 クジ付きアイスバー
|
| コンテスト | |
| ユーザー |
小指が強い人
|
| 提出日時 | 2015-11-23 23:39:07 |
| 言語 | Ruby (3.4.1) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,013 bytes |
| コンパイル時間 | 234 ms |
| コンパイル使用メモリ | 7,552 KB |
| 実行使用メモリ | 12,416 KB |
| 最終ジャッジ日時 | 2024-10-06 18:32:03 |
| 合計ジャッジ時間 | 5,207 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 31 WA * 4 |
コンパイルメッセージ
Syntax OK
ソースコード
n, k = gets.split.map(&:to_i)
s = gets.strip
a = Array.new
b = Hash.new(-1)
s.each_char{ |x| a.push(x.to_i) }
buy = 0
curr = 0
count = 0
while true do
if b.has_key?(curr)
break
end
buy += 1
free = 0
roop = curr
pc = 0
while true do
free += a[curr]
count += 1
pc += 1
break if free == 0
curr = (curr + 1) % n
free -= 1
break if roop == curr
end
if count >= k || (free != 0 && roop == curr)
puts buy
exit
end
b[roop] = pc
curr = (curr + 1) % n
end
bn = 0
kc = 0
find = false
vsum = 0
b.each do |key, value|
if key == curr
bn = b.length - kc
find = true
end
if find
vsum += value
end
kc += 1
end
rc = (k - count) / vsum
left = k - count - rc * vsum
buy += rc * bn
vc = 0
b.each_value do |value|
if vc >= b.length - bn
if left <= 0
break
end
left -= value
buy += 1
end
vc += 1
end
puts buy
小指が強い人