結果

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

ソースコード

diff #
raw source code

PROGRAM MAIN
    IMPLICIT NONE
    INTEGER :: H, W, I, J, K, COUNT, X, Y, DX, DY
    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 = 2, K
        DX = U(I) - U(1)
        DY = V(I) - V(1)
        COUNT = 0

        DO J = 1, K
            X = U(J) + DX
            Y = V(J) + DY
            IF (((X < 1 .OR. X > H) .OR. (Y < 1 .OR. Y > W)) .OR. S_NUM(U(J), V(J)) == 2) THEN
                CYCLE
            END IF
            IF(S_NUM(X, Y) == 1) THEN
                COUNT = COUNT + 1
                S_NUM(X, Y) = 2
            END IF
        END DO

        IF (2 * COUNT == K) THEN
            PRINT *, 'YES'
            RETURN
        END IF
        DO J = 1, K
            IF(S_NUM(U(J), V(J)) == 2) S_NUM(U(J), V(J)) = 1
        END DO
    END DO

    PRINT *, 'NO'

END PROGRAM MAIN
0