삼각형 세기

최대 3000 곱하기 6000개의 꼭짓점을 가진 삼각 격자를 ASCII 그림으로 입력받아, 그려진 수평선과 대각선으로 이루어진 모든 삼각형의 개수를 센다.

보통7기하완전 탐색동적 계획법아직 제출이 없습니다시간 제한6초메모리 제한1024 MB

문제

베이징으로 가는 여행에 퍼즐 책을 잔뜩 챙겼다. 그중 상당수에는 그림 1에서 삼각형을 몇 개 찾을 수 있는지 묻는 문제가 실려 있다.

그림 1: 두 번째 예제 입력이 나타내는 그림.

몇 개 풀고 나니 금방 싫증이 났다. 그래서 이런 퍼즐을 알고리즘으로 어떻게 풀지 고민하기 시작한다. 마침 오늘 그 알고리즘이 필요하다.

입력

첫 줄에 그림의 크기를 나타내는 두 정수 r과 c가 주어진다 (1r30001 \le r \le 3000, 1c60001 \le c \le 6000). r은 꼭짓점의 행 개수이고, c는 꼭짓점의 열 개수다.

다음 2r12r-1개 줄이 그림을 나타내며, 각 줄의 길이는 최대 2c12c-1이다. 홀수 번째 줄에는 꼭짓점(소문자 x)과 0개 이상의 가로 변이 들어가고, 짝수 번째 줄에는 0개 이상의 대각선 변이 들어간다. 4k+14k+1번째 줄은 1, 5, 9, 13, ... 번째 자리에 꼭짓점이 있고, 4k+34k+3번째 줄은 3, 7, 11, 15, ... 번째 자리에 꼭짓점이 있다. 따라서 꼭짓점이 놓일 수 있는 자리는 1, 3, 5, ..., 2c12c-1번째로 모두 c개다. 가능한 꼭짓점은 모두 입력에 나타난다.

이웃한 두 꼭짓점을 잇는 가로 변은 하이픈 세 개 ---로 그린다. 대각선 변은 빗금 / 하나 또는 역빗금 \ 하나로 그린다. 변을 나타내는 문자는 두 꼭짓점 사이의 정확한 자리에 놓인다. 나머지 자리는 모두 공백이다. 줄 끝의 공백은 생략될 수 있다.

출력

그림에서 변으로 이루어진 삼각형의 개수를 크기에 상관없이 모두 세어 출력한다. 삼각형의 세 변은 모두 그려진 변 위에 놓여야 하고, 한 변은 같은 방향의 변이 연속으로 이어진 구간이다.