結果
問題 | 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)