結果

問題 No.90 品物の並び替え
コンテスト
ユーザー iLL
提出日時 2026-03-12 09:07:18
言語 Fortran
(gFortran 15.2.0)
コンパイル:
gfortran _filename_ -O2 -o ./a.out
実行:
./a.out
結果
AC  
実行時間 81 ms / 5,000 ms
コード長 1,575 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 1,715 ms
コンパイル使用メモリ 40,968 KB
実行使用メモリ 7,716 KB
最終ジャッジ日時 2026-03-12 09:07:20
合計ジャッジ時間 2,324 ms
ジャッジサーバーID
(参考情報)
judge3_1 / judge1_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 9
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

PROGRAM MAIN
    IMPLICIT NONE
    INTEGER :: N, M, I, MAX, SC
    INTEGER, ALLOCATABLE, DIMENSION(:) :: POS, U, V, W

    READ *, N, M
    ALLOCATE(U(M))
    ALLOCATE(V(M))
    ALLOCATE(W(M))
    ALLOCATE(POS(N))

    DO I = 1, N
        POS(I) = I
    END DO

    DO I = 1, M
        READ *, U(I), V(I), W(I)
    END DO


    MAX = 0
    DO WHILE (POS(1) /= 0)
        SC = 0
        DO I = 1, M
            IF (POS(U(I) + 1) < POS(V(I) + 1)) THEN
                SC = SC + W(I)
            END IF
        END DO
        IF (MAX < SC) THEN
            MAX = SC
        END IF
        CALL NEXT_PERMUTATION(POS, N)
    END DO

    PRINT *, MAX

CONTAINS
    SUBROUTINE NEXT_PERMUTATION(ARRAY, LEN)
        IMPLICIT NONE
        INTEGER, INTENT(IN) :: LEN
        INTEGER, INTENT(INOUT) :: ARRAY(LEN)
        INTEGER :: LEFT, RIGHT, TMP

        LEFT = LEN - 1
        DO WHILE (LEFT >= 1 .AND. ARRAY(LEFT) >= ARRAY(LEFT + 1))
            LEFT = LEFT - 1
        END DO
        IF (LEFT < 1) THEN
            ARRAY = 0
            RETURN
        END IF

        RIGHT = LEN
        DO WHILE (ARRAY(LEFT) >= ARRAY(RIGHT))
            RIGHT = RIGHT - 1
        END DO

        TMP = ARRAY(LEFT)
        ARRAY(LEFT) = ARRAY(RIGHT)
        ARRAY(RIGHT) = TMP

        LEFT = LEFT + 1
        RIGHT = LEN

        DO WHILE (LEFT < RIGHT)
            TMP = ARRAY(LEFT)
            ARRAY(LEFT) = ARRAY(RIGHT)
            ARRAY(RIGHT) = TMP
            LEFT = LEFT + 1
            RIGHT = RIGHT - 1
        END DO

        RETURN

    END SUBROUTINE NEXT_PERMUTATION
END PROGRAM MAIN
0