結果
| 問題 | No.90 品物の並び替え |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-03-12 09:07:18 |
| 言語 | Fortran (gFortran 15.2.0) |
| 結果 |
AC
|
| 実行時間 | 81 ms / 5,000 ms |
| コード長 | 1,575 bytes |
| 記録 | |
| コンパイル時間 | 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 |
ソースコード
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