subroutine create_map(map,H,W) implicit none logical,parameter::riku=.true.,umi=.false. character*3000::string integer(kind=4)::H,W,i,j logical,allocatable::map(:,:) read *,H,W allocate(map(0:W+1,0:H+1)) do i=1,H read *, string do j=1,W if(string(j:j)=='.') then map(j,i)=umi else map(j,i)=riku end if end do end do map(0 ,:) =umi map(W+1,:) =umi map(: ,0) =umi map(:,H+1) =umi end subroutine create_map program main implicit none interface subroutine create_map(map,H,W) logical,allocatable::map(:,:) integer::H,W end subroutine create_map end interface integer(kind=4)::H,W logical,allocatable::map(:,:) logical,parameter::riku=.true.,umi=.false. integer,allocatable::dist_h(:),dist_w(:) integer::i,j,k,l,max_dist=1,dist call create_map(map,H,W) do dist=MIN(H/2,W/2),0,-1 do i=dist,W-dist+1 do j=dist,H-dist+1 if(map(i,j).eqv.riku) then if(ALL(ALL(map(i-dist:i+dist,j-dist:j+dist),1))) then print '(i0)', dist+1 return end if end if end do end do end do end program main