아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

행렬 합

시간 제한2초메모리 제한256 MB

요약
N×M 행렬의 부분행렬 중 원소 합이 x 이하인 것의 개수를 센다.
난이도

보통10점 중 7점

유형
누적 합, 투 포인터, 이분 탐색, 배열
정답자
아직 제출이 없습니다

문제

N행 M열 정수 행렬 A와 정수 x가 주어진다. A의 부분행렬 중 원소의 합이 x 이하인 것의 개수를 구하려 한다. 예를 들어 N = M = 2, x = 5이고 A가 다음과 같다고 하자.

1 2
3 4

1x1 크기의 부분행렬 네 개는 모두 원소의 합이 x = 5 이하이다. 1과 3을 포함하는 2x1 부분행렬과 1과 2를 포함하는 1x2 부분행렬도 원소의 합이 각각 1+3 = 4, 1+2 = 3으로 x 이하이므로 조건을 만족한다. 나머지 부분행렬은 원소의 합이 5를 넘으므로 답은 6이다.

다른 예로 N = 2, M = 3, x = 0이고 A가 다음과 같다고 하자.

0 -1 -2
-3 -4 -5

A의 모든 부분행렬은 원소의 합이 0 이하이므로 답은 18이다.

N, M, x와 A를 입력으로 받아 원소의 합이 x 이하인 부분행렬의 개수를 구하는 프로그램을 작성하시오.

입력

첫 줄에 테스트 케이스의 수 T가 주어진다.

각 테스트 케이스의 첫 줄에는 N, M, x가 공백으로 구분되어 주어진다.

다음 N줄에 걸쳐 각 줄에 M개의 정수가 공백으로 구분되어 주어진다.

출력

A의 부분행렬 중 원소의 합이 x 이하인 것의 개수를 출력한다.

제한

  • 1 ≤ T ≤ 10
  • -1,000,000,000 ≤ x ≤ 1,000,000,000
  • -100,000 ≤ A의 각 원소 ≤ 100,000

예제1

  1. 예제 1

    입력
    4
    2 2 5
    1 2
    3 4
    2 3 0
    0 -1 -2
    -3 -4 -5
    4 1 3
    1
    2
    1
    2
    3 3 1
    10 10 10
    10 -100 10
    10 10 10
    
    예상 출력
    6
    18
    7
    16