직각 삼각형의 개수 2

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

요약
행이 최대 5개, 열이 M개인 격자에 주어진 점들로 만들 수 있는 직각 삼각형의 개수를 센다.
난이도

보통10점 중 6점

유형
수학, 조합론, 구현
정답자
아직 제출이 없습니다

문제

22차원 좌표평면 위에 00개 이상의 점이 있다. 각 점의 xx좌표는 11 이상 NN 이하의 정수이고, yy좌표는 11 이상 MM 이하의 정수이다.

서로 다른 세 점을 골라 직각 삼각형을 만들 수 있는 경우의 수를 구해 보자. 세 점의 순서만 바뀐 것은 같은 경우로 센다.

입력

첫째 줄에 정수 NN과 MM이 공백으로 구분되어 주어진다. (1≤N≤5(1 \leq N \leq \color{red}{5}; 1≤M≤200,000)1 \leq M \leq 200\\, 000)

둘째 줄부터 NN개의 줄에 걸쳐, 00과 11로만 이루어진 길이 MM의 문자열이 주어진다.

i+1i+1번째 줄의 jj번째 문자가 11이면 (i,j)(i, j)에 점이 11개 존재한다는 뜻이고, jj번째 문자가 00이면 (i,j)(i, j)에 점이 존재하지 않는다는 뜻이다. (1≤i≤N(1 \le i \le N; 1≤j≤M)1 \le j \le M)

점이 하나도 존재하지 않을 수도 있다.

출력

첫째 줄에 직각 삼각형을 만들 수 있는 경우의 수를 출력한다.

예제2

  1. 예제 1

    입력
    3 4
    0001
    1000
    0011
    
    예상 출력
    2
    
  2. 예제 2

    입력
    2 5
    00000
    00000
    
    예상 출력
    0