結果

問題 No.3 ビットすごろく
コンテスト
ユーザー iLL
提出日時 2026-03-07 06:42:03
言語 Fortran
(gFortran 15.2.0)
コンパイル:
gfortran _filename_ -O2 -o ./a.out
実行:
./a.out
結果
AC  
実行時間 1 ms / 5,000 ms
コード長 815 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 597 ms
コンパイル使用メモリ 39,940 KB
実行使用メモリ 7,844 KB
最終ジャッジ日時 2026-03-07 06:42:06
合計ジャッジ時間 1,099 ms
ジャッジサーバーID
(参考情報)
judge2 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 33
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

PROGRAM MAIN
    IMPLICIT NONE

    INTEGER :: N
    INTEGER, ALLOCATABLE :: A(:)
    INTEGER, ALLOCATABLE :: QUE(:)
    INTEGER :: HEAD, TAIL
    INTEGER :: I, K
    INTEGER :: LEFT, RIGHT

    READ *, N

    ALLOCATE(A(N), SOURCE = -1)
    ALLOCATE(QUE(N))

    HEAD = 1
    TAIL = 1

    QUE(1) = 1
    A(1) = 1

    DO WHILE(HEAD <= TAIL)

        I = QUE(HEAD)
        HEAD = HEAD + 1

        K = POPCNT(I)

        LEFT = I - K
        RIGHT = I + K

        IF (LEFT > 0 .AND. A(LEFT) == -1) THEN
            A(LEFT) = A(I) + 1
            TAIL = TAIL + 1
            QUE(TAIL) = LEFT
        END IF

        IF (RIGHT <= N .AND. A(RIGHT) == -1) THEN
            A(RIGHT) = A(I) + 1
            TAIL = TAIL + 1
            QUE(TAIL) = RIGHT
        END IF
    
    END DO

    PRINT *, A(N)
END PROGRAM MAIN
0