포도 덩굴

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

요약
높이가 행과 열 방향으로 단조 증가하는 격자와 높이 구간 질의들이 주어질 때, 각 질의마다 구간 안의 높이만으로 이루어진 가장 큰 정사각형 부분격자의 한 변 길이를 구한다.
난이도

어려움10점 중 8점

유형
이분 탐색, 동적 계획법, 누적 합, 행렬
정답자
아직 제출이 없습니다

문제

콰드라도니아(Quadradonia)의 모든 농지는 정사각형이고, 넓이가 모두 같으며, 완전히 평평하고, 각 변이 남북 방향과 동서 방향에 나란히 놓여 있다.

농지가 평평하기 때문에 콰드라도니아의 언덕은 높이가 서로 다른 거대한 계단처럼 보인다. 어느 산에는 N×MN \times M개의 농지로 이루어진 흥미로운 직사각형 구역이 있다. 이 구역에서 임의의 농지에서 시작해 서쪽에서 동쪽으로 이동하면 높이가 비내림차순(non-decreasing)이다. 마찬가지로 임의의 농지에서 시작해 북쪽에서 남쪽으로 이동해도 높이가 비내림차순이다.

콰드라도니아의 한 대형 포도주 회사가 이 구역의 일부 농지를 빌려 포도를 재배하려고 한다. 이 회사는 특정 높이 구간에서 재배할 때에만 잘 자라는 특별한 포도 품종에 관심이 있다. 즉, 높이가 주어진 고도 LL 이상이고 UU 이하인 농지만 빌리려 한다. 수확을 쉽게 하기 위해 빌리는 농지들은 서로 연결된 하나의 구역을 이루어야 하며, 콰드라도니아 사람들은 정사각형을 좋아하므로 그 구역은 반드시 정사각형이어야 한다.

회사는 아직 어떤 품종을 재배할지 정하지 않았으므로, 품종마다 하나씩 높이 구간을 나타내는 질의 목록을 가지고 있다.

직사각형 관심 구역의 정보와 높이 구간 질의 목록이 주어질 때, 각 질의에 대해 높이가 모두 해당 구간 안에 있는, 서로 연결된 정사각형 구역의 가장 큰 한 변의 길이(농지 개수 단위)를 구하는 프로그램을 작성하여라. 예를 들어 4×54 \times 5 크기의 관심 구역에서는 서로 다른 높이 구간에 대해 여러 가지 정사각형이 조건을 만족할 수 있다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 공백 하나로 구분된 두 정수 NN과 MM이 주어지며, 각각 남북 방향 농지의 개수(1≤N≤5001 \le N \le 500)와 동서 방향 농지의 개수(1≤M≤5001 \le M \le 500)를 나타낸다. 이어지는 NN개의 줄에는 각각 공백으로 구분된 MM개의 정수 Hi,jH_{i,j}가 주어지며, 이는 농지의 높이를 나타낸다(1≤i≤N1 \le i \le N, 1≤j≤M1 \le j \le M에 대해 0≤Hi,j≤1050 \le H_{i,j} \le 10^5이고, 또한 Hi−1,j≤Hi,jH_{i-1,j} \le H_{i,j}, Hi,j−1≤Hi,jH_{i,j-1} \le H_{i,j}이다). 다음 줄에는 질의의 개수를 나타내는 정수 QQ가 주어진다(1≤Q≤1041 \le Q \le 10^4). 이어지는 QQ개의 줄에는 각각 공백 하나로 구분된 두 정수 LL과 UU가 주어지며, 하나의 높이 구간을 나타낸다(0≤L≤U≤1050 \le L \le U \le 10^5). 빌리는 농지의 높이는 LL 이상 UU 이하여야 한다.

마지막 테스트 케이스 다음에는 공백 하나로 구분된 두 개의 0이 담긴 줄이 주어지며, 이 줄은 처리하지 않는다.

출력

각 테스트 케이스마다 Q+1Q + 1개의 줄을 출력한다. 처음 QQ개의 줄에는 각각 하나의 정수를 출력하는데, 이는 해당 질의의 구간 안에 모든 높이가 포함되는, 서로 연결된 정사각형 구역의 가장 큰 한 변의 길이(농지 개수 단위)이다(그런 정사각형이 없으면 00을 출력한다). 각 테스트 케이스에서 마지막으로 출력하는 줄은 구분자로, 하이픈 문자 '-' 하나로만 이루어진다.

예제3

  1. 예제 1

    입력
    4 5
    13 21 25 33 34
    16 21 33 35 35
    16 33 33 45 50
    23 51 66 83 93
    3
    22 90
    33 35
    20 100
    4 4
    1 7 9 11
    5 8 10 12
    7 10 15 17
    11 19 30 41
    4
    6 20
    7 9
    10 10
    13 14
    0 0
    
    예상 출력
    3
    2
    4
    -
    3
    1
    1
    0
    -
    
  2. 예제 2

    입력
    1 1
    5
    2
    5 5
    0 4
    0 0
    
    예상 출력
    1
    0
    -
    
  3. 예제 3

    입력
    3 3
    0 0 0
    0 0 0
    0 0 0
    3
    0 0
    0 100000
    1 5
    0 0
    
    예상 출력
    3
    3
    0
    -