Ten
시간 제한0.5초메모리 제한1024 MB
양의 정수로 채워진 행렬에서 원소의 합이 정확히 10인 직사각형 부분행렬의 개수를 센다. 행렬 크기는 최대 300 곱하기 300이다.
문제
부동산 회사 IC가 직사각형 모양의 땅을 관리하고 있다. 이 땅은 행렬 모양으로 개의 구획으로 나뉘어 있으며, 행의 수는 , 열의 수는 이다. 각 구획은 양의 정수인 가격을 가진다. IC는 땅의 직사각형 일부를 팔려고 하는데, 그 일부의 가격이 10이어야 한다. 어떤 부분의 가격은 그 부분에 속한 구획들의 가격을 모두 더한 값이다. 이런 부분이 여러 개 있을 수 있으므로, IC는 팔 수 있는 후보 부분의 개수를 알고 싶어 한다. IC가 땅에서 후보 부분의 개수를 셀 수 있도록 도와주는 프로그램을 작성하라.
예를 들어, 개의 구획을 가진 땅의 구획 가격이 다음과 같이 주어졌다고 하자.

직사각형으로 표시된 팔 수 있는 후보 부분을 네 개 찾을 수 있다. 첫 번째는 첫째 행과 둘째 행에서 둘째 열부터 셋째 열까지 걸친 네 개의 구획으로 이루어지고, 두 번째는 둘째 행과 셋째 행에서 셋째 열부터 다섯째 열까지 걸친 여섯 개의 구획, 세 번째는 첫째 행에서 다섯째 열부터 여섯째 열까지 걸친 두 개의 구획, 네 번째는 일곱째 열에서 셋째 행부터 다섯째 행까지 걸친 세 개의 구획이다. 따라서 위 입력에 대해 프로그램은 4를 출력해야 한다.
입력
입력은 표준 입력에서 읽는다. 입력의 첫 줄에는 땅의 크기를 나타내는 두 양의 정수 과 이 공백으로 구분되어 주어진다 (). 다음 개의 줄에는 번째 행 구획들의 가격 가 각각 개씩 공백으로 구분되어 주어진다 (, , ).
출력
출력은 표준 출력에 쓴다. 가격이 10인 직사각형 부분의 개수를 나타내는 정수를 한 줄에 출력한다.