結果
| 問題 |
No.402 最も海から遠い場所
|
| コンテスト | |
| ユーザー |
jj
|
| 提出日時 | 2016-07-23 04:56:22 |
| 言語 | Fortran (gFortran 14.2.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 2,087 bytes |
| コンパイル時間 | 303 ms |
| コンパイル使用メモリ | 35,060 KB |
| 実行使用メモリ | 10,276 KB |
| 最終ジャッジ日時 | 2024-11-06 14:26:51 |
| 合計ジャッジ時間 | 5,736 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 13 TLE * 1 -- * 5 |
ソースコード
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
integer function get_stream(map,H,W)
integer(kind=4)::H,W,i,j,closest
logical,parameter::riku=.true.,umi=.false.
integer,allocatable::length(:)
logical,allocatable::map(:,:)
allocate(length(MAX(H,W)))
length =0
do i=1,W
closest=0
do j=1,H
if(map(i,j).eqv.riku) then
length(j)=j-closest
else
closest=j
end if
end do
end do
get_stream=MAXVAL(length)
length =0
do j=1,H
closest=0
do i=1,W
if(map(i,j).eqv.riku) then
length(i)=i-closest
else
closest=i
end if
end do
end do
get_stream=MIN(MAXVAL(length), get_stream)
end function get_stream
program main
implicit none
interface
subroutine create_map(map,H,W)
logical,allocatable::map(:,:)
integer::H,W
end subroutine create_map
integer function get_stream(map,H,W)
integer(kind=4)::H,W
logical,allocatable::map(:,:)
end function get_stream
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,length
call create_map(map,H,W)
length = get_stream(map,H,W)-1
do dist=length,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
jj