結果
問題 | No.8 N言っちゃダメゲーム |
ユーザー |
|
提出日時 | 2023-10-30 16:37:29 |
言語 | Fortran (gFortran 14.2.0) |
結果 |
RE
|
実行時間 | - |
コード長 | 971 bytes |
コンパイル時間 | 563 ms |
コンパイル使用メモリ | 33,280 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-09-25 17:18:48 |
合計ジャッジ時間 | 2,125 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 5 RE * 6 |
ソースコード
program yukicoder_8use, intrinsic :: iso_fortran_envimplicit noneinteger(int32) :: pinteger(int32) :: n, kinteger(int32) :: iread(input_unit, *) pdo i = 1, pread(input_unit, *) n, kcall solve(n, k)end docontainsimpure subroutine solve(n, k)integer(int32), intent(in) :: n, klogical :: dp(0:n) !> そのターンの人が勝つか.integer(int32) :: n_trueinteger(int32) :: idp(n - 1:n) = .false.dp(max(0, n - k - 1):n - 2) = .true.n_true = count(dp(n - k:n - 1)) !> i == n - k - 1 とすると, dp(n - k:n - 1) の .true. の数.do i = n - k - 2, 0, -1if (dp(i + k + 1)) n_true = n_true - 1if (dp(i + 1)) n_true = n_true + 1!> dp(i + 1:i + k) が全て .true. なら負け. ひとつでも .false. があれば勝ち.dp(i) = n_true < kend dowrite(output_unit, '(a)') trim(merge("Win ", "Lose", dp(0)))end subroutine solveend program yukicoder_8