만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

로봇

시간 제한1초메모리 제한1024 MB

요약
장애물이 있는 격자에서 로봇이 직진하다 막히면 오른쪽으로 90도 돌기를 반복합니다. 빈 칸 어디에서 어느 방향으로 출발하든 청소할 수 있는 최대 칸 수를 구합니다.
난이도

보통10점 중 6점

유형
시뮬레이션, 그래프, 행렬
정답자
아직 제출이 없습니다

문제

로마스는 청소를 좋아하지 않아서 자율 주행 로봇 청소기를 샀다. 다만 이 로봇은 단순하다. 청소할 때 로봇은 장애물(가구나 벽 등)에 부딪힐 때까지 직진한다. 장애물에 부딪히면 오른쪽으로 90도 회전하고 같은 동작을 반복한다.

로마스의 집 평면도는 N×MN \times M 격자로 나타낼 수 있다. 각 칸은 청소할 수 있는 빈 칸이거나 장애물이 있는 칸이다. 로봇은 격자의 변과 평행하게 움직인다.

로마스는 출근하기 전에 로봇을 켜 둔다. 퇴근 후에는 청소된 면적이 가장 넓기를 바란다.

로봇은 빈 칸 중 어느 곳에서든 출발할 수 있으며, 출발 방향은 위, 아래, 왼쪽, 오른쪽 중 자유롭게 고를 수 있다. 로봇이 청소할 수 있는 최대 면적을 구하시오.

입력

첫 줄에 평면도의 크기 NN과 MM이 공백으로 구분되어 주어진다. 이어지는 NN개의 줄에는 평면도가 주어지며, 각 줄은 MM개의 문자로 이루어진다. .은 빈 칸을, #은 장애물을 나타낸다. 모든 테두리 칸은 장애물이고, 빈 칸은 적어도 하나 있다.

출력

청소할 수 있는 칸 수의 최댓값을 정수 하나로 출력한다.

제한

3≤N,M≤10003 \le N, M \le 1000

예제1

  1. 예제 1

    입력
    5 6
    ######
    ###..#
    #...##
    #.##.#
    ######
    
    예상 출력
    4