結果

問題 No.4 おもりと天秤
コンテスト
ユーザー iLL
提出日時 2026-03-07 10:01:50
言語 Fortran
(gFortran 15.2.0)
コンパイル:
gfortran _filename_ -O2 -o ./a.out
実行:
./a.out
結果
WA  
実行時間 -
コード長 1,213 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 1,801 ms
コンパイル使用メモリ 40,432 KB
実行使用メモリ 7,844 KB
最終ジャッジ日時 2026-03-07 10:01:53
合計ジャッジ時間 2,879 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 13 WA * 10
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

SUBROUTINE SORT(W, N)
    IMPLICIT NONE
    INTEGER, INTENT(INOUT) :: W(N)
    INTEGER :: I, J, N, TMP

    DO I = 1, N
        DO J = 1, N - I
            IF (W(I) > W(J)) THEN
                TMP = W(J)
                W(J) = W(I)
                W(I) = TMP
            END IF
        END DO
    END DO

END SUBROUTINE SORT

RECURSIVE SUBROUTINE DOVE(TAR, CURRENT, N, IMA, W)
    IMPLICIT NONE
    INTEGER :: TAR, CURRENT, N, IMA
    INTEGER ::  W(N)

    IF (TAR == 0 .OR. CURRENT == N) THEN
        RETURN
    END IF

    IF (IMA + W(CURRENT) < TAR) THEN
        CALL DOVE(TAR, CURRENT + 1, N, IMA + W(CURRENT), W)
    ELSE IF (IMA + W(CURRENT) == TAR) THEN
        TAR = 0
    END IF

END SUBROUTINE DOVE
            


PROGRAM MAIN
    IMPLICIT NONE
    INTEGER :: N, W_SUM, TAR
    INTEGER, ALLOCATABLE, DIMENSION(:) :: W

    READ *, N
    
    ALLOCATE(W(N))
    READ *, W(:)

    CALL SORT(W, N)

    W_SUM = SUM(W)
    IF (MOD(W_SUM, 2) /= 0) THEN
        PRINT *, 'impossible'
        RETURN
    END IF

    TAR = W_SUM / 2 - W(N)

    ! PRINT *, TAR

    CALL DOVE(TAR, 1, N, 0, W)
    IF (TAR == 0) THEN
        PRINT *, 'possible'
    ELSE
        PRINT *, 'impossible'
    END IF

END PROGRAM MAIN
0