학교 가는 길

시간 제한6초메모리 제한128 MB

요약
동쪽, 남쪽, 동쪽으로 이어지는 고정된 세 구간 경로가 모두 잔디 칸 위에 놓이는 두 잔디 칸 쌍의 수를 센다.
난이도

보통10점 중 6점

유형
행렬, 시뮬레이션, 구현, 누적 합
정답자
아직 제출이 없습니다

문제

루카는 매일 걸어서 학교에 간다. 길은 늘 같고, 세 구간으로 나뉜다.

  • 먼저 전체 거리의 14\frac{1}{4}을 동쪽으로 곧게 걷는다.
  • 이어서 전체 거리의 12\frac{1}{2}을 남쪽으로 곧게 걷는다.
  • 마지막으로 남은 14\frac{1}{4}을 다시 동쪽으로 곧게 걷는다.

루카가 사는 마을은 크기가 같은 정사각형 칸으로 이루어진 N×NN \times N 격자다. 어떤 칸은 가시덤불로 가득 차서 전혀 지나갈 수 없고, 나머지 칸은 잔디밭이라 루카가 마음대로 밟고 지나갈 수 있다. 루카는 걷는 동안 두 칸의 경계선 위를 걷지 않는다.

루카의 집은 어느 잔디밭 칸의 중심에 있고, 학교는 그와 다른 잔디밭 칸의 중심에 있다. 두 위치 모두 알려져 있지 않다. 루카가 지나가는 칸은 모두 잔디밭이어야 한다.

격자가 주어지면 루카의 집과 학교가 있을 수 있는 위치 쌍의 개수를 세는 프로그램을 작성하시오.

아래 그림에서 회색 칸은 지나갈 수 없고, 흰색 칸은 지나갈 수 있다. 그림은 첫 번째 예제의 답인 세 쌍을 보여 준다.

입력

첫째 줄에 격자의 크기 NN (1≤N≤20001 \le N \le 2000)이 주어진다.

다음 NN개의 줄에는 각 줄마다 문자 NN개가 주어진다. 각 문자는 '.' 또는 소문자 'x'이다. '.'은 잔디밭 칸이고, 'x'는 지나갈 수 없는 칸이다.

격자는 방위와 나란하다. 첫째 줄의 칸이 가장 북쪽이고, 첫째 열의 칸이 가장 서쪽이다.

출력

첫째 줄에 루카의 집과 학교가 있을 수 있는 위치 쌍의 개수를 출력한다.

예제3

  1. 예제 1

    입력
    5
    .....
    .x.x.
    .x...
    .....
    .....
    
    예상 출력
    3
    
  2. 예제 2

    입력
    6
    ......
    ......
    ......
    ......
    ......
    ......
    
    예상 출력
    20
    
  3. 예제 3

    입력
    7
    .......
    .xx.xx.
    x...xx.
    .......
    .xx.xx.
    .xx.xx.
    .......
    
    예상 출력
    2