結果
問題 | No.2946 Puyo |
ユーザー | osada-yum |
提出日時 | 2024-11-12 02:59:06 |
言語 | Fortran (gFortran 13.2.0) |
結果 |
MLE
|
実行時間 | - |
コード長 | 2,364 bytes |
コンパイル時間 | 2,031 ms |
コンパイル使用メモリ | 34,304 KB |
実行使用メモリ | 816,384 KB |
最終ジャッジ日時 | 2024-11-12 02:59:17 |
合計ジャッジ時間 | 10,561 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 1 ms
5,248 KB |
testcase_01 | AC | 1 ms
5,248 KB |
testcase_02 | AC | 2 ms
5,248 KB |
testcase_03 | AC | 430 ms
7,168 KB |
testcase_04 | AC | 449 ms
7,424 KB |
testcase_05 | AC | 427 ms
7,168 KB |
testcase_06 | AC | 435 ms
7,168 KB |
testcase_07 | AC | 449 ms
7,168 KB |
testcase_08 | MLE | - |
testcase_09 | -- | - |
testcase_10 | -- | - |
testcase_11 | -- | - |
testcase_12 | -- | - |
testcase_13 | -- | - |
testcase_14 | -- | - |
testcase_15 | -- | - |
testcase_16 | -- | - |
testcase_17 | -- | - |
testcase_18 | -- | - |
testcase_19 | -- | - |
testcase_20 | -- | - |
testcase_21 | -- | - |
testcase_22 | -- | - |
testcase_23 | -- | - |
testcase_24 | -- | - |
testcase_25 | -- | - |
testcase_26 | -- | - |
testcase_27 | -- | - |
testcase_28 | -- | - |
testcase_29 | -- | - |
testcase_30 | -- | - |
testcase_31 | -- | - |
testcase_32 | -- | - |
testcase_33 | -- | - |
testcase_34 | -- | - |
testcase_35 | -- | - |
testcase_36 | -- | - |
testcase_37 | -- | - |
testcase_38 | -- | - |
testcase_39 | -- | - |
testcase_40 | -- | - |
testcase_41 | -- | - |
testcase_42 | -- | - |
testcase_43 | -- | - |
testcase_44 | -- | - |
testcase_45 | -- | - |
testcase_46 | -- | - |
testcase_47 | -- | - |
ソースコード
!> This file was processed by `fypp`. !> Today's fortune: "forever WJ...", really OK? !> ランダムウォーク猿「'ナップサックDP' で はっぴー.」 program f902946 use, intrinsic :: iso_fortran_env !> auto use module implicit none integer(int32), parameter :: dy(*) = [1, 0, -1, 0] integer(int32), parameter :: dx(*) = [0, 1, 0, -1] integer(int32) :: h, w character, allocatable :: grids(:, :) logical, allocatable :: visited(:, :) integer(int32) :: i, j read(input_unit, *) h, w allocate(grids(h, w)) do i = 1, h read(input_unit, '(*(a1))') grids(i, :) end do allocate(visited(h, w), source = .false.) do j = 1, w do i = 1, h if (visited(i, j)) cycle write(error_unit, *) j, i, grids(i, j) block integer(int32) :: cnts cnts = 0 call dfs_count(h, w, grids, visited, cnts, i, j) if (cnts < 4) cycle call dfs_fill(h, w, grids(i, j), grids, i, j) end block end do end do do i = 1, h write(output_unit, '(*(a1))') grids(i, :) end do contains pure recursive subroutine dfs_count(h, w, grids, visited, cnts, y, x) integer(int32), intent(in) :: h, w character, intent(in) :: grids(h, w) logical, intent(inout) :: visited(h, w) integer(int32), intent(inout) :: cnts integer(int32), intent(in) :: y, x integer(int32) :: d if (visited(y, x)) return visited(y, x) = .true. cnts = cnts + 1 do d = 1, size(dy) associate(ny => y + dy(d), nx => x + dx(d)) if (ny < 1 .or. ny > h .or. nx < 1 .or. nx > w) cycle if (visited(ny, nx)) cycle if (grids(y, x) /= grids(ny, nx)) cycle call dfs_count(h, w, grids, visited, cnts, ny, nx) end associate end do end subroutine dfs_count pure recursive subroutine dfs_fill(h, w, c, grids, y, x) integer(int32), intent(in) :: h, w character, value :: c character, intent(inout) :: grids(h, w) integer(int32), intent(in) :: y, x integer(int32) :: d grids(y, x) = "." do d = 1, size(dy) associate(ny => y + dy(d), nx => x + dx(d)) if (ny < 1 .or. ny > h .or. nx < 1 .or. nx > w) cycle if (c /= grids(ny, nx)) cycle call dfs_fill(h, w, c, grids, ny, nx) end associate end do end subroutine dfs_fill end program f902946