var file : int
open : file, "DATA31.txt", get
fcn size (var board : array 1 .. *, 1 .. * of boolean, x, y, w, h : int) : int
if x < 1| y < 1| x > w| y > h| board (x, y) then
result 0
end if
board (x, y) := true
result 1 + size (board, x + 1, y, w, h) + size (board, x - 1, y, w, h) + size (board, x, y + 1, w, h) + size (board, x, y - 1, w, h)
end size
for : 1 .. 1
var num, large, small : int
num := 0
large := minint
small := maxint
var w, h, temp : int
get : file, w, h
var board : array 1 .. w, 1 .. h of boolean
for i : 1 .. h
var s : string
get : file, s
for j : 1 .. w
if s (j) = 'X' then
board (j, i) := false
else
board (j, i) := true
end if
end for
end for
for i : 1 .. w
for j : 1 .. h
if ~board (i, j) then
num += 1
temp := size (board, i, j, w, h)
large := max (large, temp)
small := min (small, temp)
end if
end for
end for
put num, " ", large, " ", small
end for |