結果

問題 No.179 塗り分け
コンテスト
ユーザー iLL
提出日時 2026-03-14 09:47:57
言語 Fortran
(gFortran 15.2.0)
コンパイル:
gfortran _filename_ -O2 -o ./a.out
実行:
./a.out
結果
WA  
実行時間 -
コード長 1,542 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 1,250 ms
コンパイル使用メモリ 41,616 KB
実行使用メモリ 6,144 KB
最終ジャッジ日時 2026-03-14 09:48:03
合計ジャッジ時間 3,124 ms
ジャッジサーバーID
(参考情報)
judge3_1 / judge1_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 6
other AC * 30 WA * 10
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

PROGRAM MAIN
    IMPLICIT NONE
    INTEGER :: H, W, I, J, K, L, COUNT, X, Y
    CHARACTER*50, ALLOCATABLE, DIMENSION(:) :: S
    INTEGER, ALLOCATABLE, DIMENSION(:, :) :: S_NUM
    INTEGER, ALLOCATABLE, DIMENSION(:) :: U, V

    READ *, H, W
    ALLOCATE(S(H))
    ALLOCATE(S_NUM(H, W))
    S_NUM = 0
    READ *, S
    DO I = 1, H
        DO J = 1, W
            IF (S(I)(J:J) == '#') THEN
                S_NUM(I, J) = 1
            END IF
        END DO
    END DO

    K = SUM(S_NUM)
    ! PRINT *, K

    IF (MOD(K, 2) == 1) THEN
        PRINT *, 'NO'
        RETURN
    END IF

    ALLOCATE(U(K))
    ALLOCATE(V(K))

    COUNT = 1
    DO I = 1, H
        DO J = 1, W
            IF(S_NUM(I, J) == 1) THEN
                U(COUNT) = I
                V(COUNT) = J
                COUNT = COUNT + 1
            END IF
        END DO
    END DO

    ! PRINT *, U
    ! PRINT *, V

    DO I = 0, H - 1
        DO J = 0, W - 1
            COUNT = 0
            DO L = 1, K
                X = U(L) + I
                Y = V(L) + J
                IF (X > H .OR. Y > W) THEN
                    CYCLE
                END IF
                IF (S_NUM(X, Y) == 1 .AND. ((X + I > H .OR. Y + J > W) .OR. S_NUM(X + I, Y + J) == 0)) THEN
                    COUNT = COUNT + 1
                END IF
                ! PRINT *, X, Y
            END DO
            IF (2 * COUNT == K) THEN
                PRINT *, 'YES'
                RETURN
            END IF
            ! PRINT *, I, J
        END DO
    END DO

    PRINT *, 'NO'

END PROGRAM MAIN
0