結果
| 問題 | No.3 ビットすごろく |
| コンテスト | |
| ユーザー |
scaler
|
| 提出日時 | 2024-08-31 11:30:25 |
| 言語 | Scala(Beta) (3.6.2) |
| 結果 |
AC
|
| 実行時間 | 958 ms / 5,000 ms |
| コード長 | 728 bytes |
| コンパイル時間 | 12,866 ms |
| コンパイル使用メモリ | 267,000 KB |
| 実行使用メモリ | 65,400 KB |
| 最終ジャッジ日時 | 2024-08-31 11:31:12 |
| 合計ジャッジ時間 | 41,508 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 33 |
ソースコード
import scala.io.StdIn.readLine
import scala.collection.mutable.Queue
@main
def yuki3(): Unit =
val N = readLine().split(" ").map(_.toInt).head
val dist: Array[Int] = Array.ofDim[Int](10001)
val visited: Array[Boolean] = Array.ofDim[Boolean](10001)
var q = Queue[Int](1)
visited(1) = true
while q.nonEmpty do
val x = q.dequeue
var p = 0
var num = x
while num != 0 do
p += num & 1
num >>= 1
if x + p <= N && !visited(x + p) then
visited(x + p) = true
dist(x + p) = dist(x) + 1
q.enqueue(x + p)
if x - p > 0 && !visited(x - p) then
visited(x - p) = true
dist(x - p) = dist(x) + 1
q.enqueue(x - p)
println(if visited(N) then dist(N) + 1 else -1)
scaler