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

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

MaxComp

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

요약
최대 1000 곱하기 1000 격자에서 (최댓값 - 최솟값 - 집합의 크기)를 최대로 만드는 연결 부분집합을 찾는다.
난이도

어려움10점 중 8점

유형
그래프, 유니온 파인드, 그리디, 정렬
정답자
아직 제출이 없습니다

문제

행렬에서 세포들의 부분집합 SS가 연결되어 있다는 것은, SS의 임의의 두 세포 사이에 SS에 속한 세포들만으로 이루어진 경로가 존재한다는 뜻이다. 경로는 세포들의 나열 u1,u2,…,uku_1, u_2, \ldots, u_k이며, 모든 i=1,…,k−1i = 1, \ldots, k-1에 대해 uiu_i와 ui+1u_{i+1}은 인접하다.

NN개의 행과 MM개의 열로 이루어진 행렬 AA가 주어질 때, AA의 연결된 부분집합 SS에 대해 다음 값을 정의한다.

weight(S)=max⁡{A(s)∣s∈S}−min⁡{A(s)∣s∈S}−∣S∣weight(S) = \max\{A(s) \mid s \in S\} - \min\{A(s) \mid s \in S\} - |S|

여기서 ∣\*∣|\*|는 집합의 크기이고, A(s)A(s)는 행렬 AA에서 세포 ss의 값이다.

입력

첫째 줄에 행렬 AA의 크기를 나타내는 두 수 NN과 MM이 주어진다.

다음 NN개의 줄에 행렬이 주어진다. ii번째 줄에는 MM개의 정수가 주어지며, jj번째 값은 A(i,j)A(i,j)이다.

출력

주어진 행렬의 모든 연결된 부분집합 SS 중 weight(S)weight(S)의 최댓값을 출력한다.

제한

  • 0≤A(i,j)≤1090 \le A(i,j) \le 10^9
  • 1≤N,M≤1031 \le N, M \le 10^3

힌트

최적의 연결된 부분집합 중 하나는 {(1,1),(1,2),(2,2)}\{(1,1),(1,2),(2,2)\}이다. {(1,1),(2,2)}\{(1,1),(2,2)\}는 (1,1)(1,1)과 (2,2)(2,2) 사이에 경로가 없으므로 답이 될 수 없다.

예제1

  1. 예제 1

    입력
    2 3
    2 4 3
    5 7 5
    
    예상 출력
    2