結果
| 問題 | No.179 塗り分け |
| コンテスト | |
| ユーザー |
jj
|
| 提出日時 | 2016-10-13 23:09:29 |
| 言語 | Fortran (gFortran 14.2.0) |
| 結果 |
AC
|
| 実行時間 | 97 ms / 3,000 ms |
| コード長 | 2,023 bytes |
| コンパイル時間 | 2,092 ms |
| コンパイル使用メモリ | 35,820 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-07-23 14:39:18 |
| 合計ジャッジ時間 | 4,028 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 6 |
| other | AC * 40 |
ソースコード
program main
implicit none
integer::H,W,i,j,hoffset,woffset,blacknum
integer,allocatable::mas(:,:),nuri(:,:)
character*50,allocatable::S(:)
integer,parameter::white=0,black=1,red=2,blue=3
character,parameter::cwhite='.',cblack='#'
read *,H,W
allocate(S(H))
allocate(mas(W,H),nuri(W,H))
read *,S
do i=1, H
do j=1,W
if(S(i)(j:j).eq.cwhite) then
mas(j,i) = white
else
mas(j,i) = black
end if
end do
end do
blacknum = COUNT(mas.eq.black)
if(blacknum.eq.0.or.MOD(blacknum, 2).eq.1) then
print '(a)', "NO"
return
end if
do hoffset=-(H-1), H-1
do woffset=-(W-1), W-1
if(hoffset.eq.0.and.woffset.eq.0) cycle
nuri = mas
do i=1,H
do j=1,W
if(j+woffset.le.0.or.j+woffset.gt.W.or. &
i+hoffset.le.0.or.i+hoffset.gt.H) then
cycle
end if
if(nuri(j,i).eq.black.and. &
nuri(j+woffset,i+hoffset).eq.black) then
nuri(j,i) = red
nuri(j+woffset,i+hoffset) = blue
end if
! print *,j,i
! call printer(nuri,H,W)
end do
end do
if(ANY(nuri.eq.black)) then
continue
else
print '(a)', "YES"
return
end if
end do
end do
print '(a)', "NO"
contains
subroutine printer(nuri, H, W)
integer,allocatable::nuri(:,:)
integer,parameter::white=0,black=1,red=2,blue=3
character,parameter::cwhite='.',cblack='#',cred='*',cblue='%'
integer::i,j,H,W
character::c
do i=1,H
do j=1,W
select case(nuri(j,i))
case(white)
c = cwhite
case(black)
c = cblack
case(red)
c = cred
case(blue)
c = cblue
end select
write (*,'(a)',advance='no') c
end do
write (*,*)
end do
end subroutine printer
end program main
jj