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

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

빙고

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

요약
N x M 행렬의 각 열에 토큰을 하나씩 놓아 행별 토큰 개수의 최대-최소 차이를 최소로 하고, 그다음 토큰이 놓인 칸 값의 최댓값을 최소로 한다.
난이도

보통10점 중 7점

유형
그리디, 이분 탐색, 정렬, 구현
정답자
아직 제출이 없습니다

문제

다음과 같은 게임을 생각하자. N×MN \times M 크기의 정수 행렬이 있다. 이 행렬의 몇몇 칸에 MM개의 토큰을 놓아야 하는데, 조건은 다음과 같다.

  1. 각 열에는 토큰이 정확히 하나씩 들어 있다.
  2. 한 행에 들어 있는 토큰 개수의 최댓값과 최솟값의 차이 DrD_r이 가능한 한 최소이다.
  3. 이러한 토큰 배치 중에서, 토큰이 놓인 칸에 적힌 값의 최댓값이 가능한 한 최소인 배치를 고른다.

입력

첫째 줄에 두 정수 NN과 MM이 주어진다. (1≤N,M≤1101 \le N, M \le 110) 그다음 NN개의 줄에 걸쳐 행렬 aa가 주어지며, 각 줄에는 MM개의 정수 ai,ja_{i,j}가 들어 있다. (1≤ai,j≤1091 \le a_{i,j} \le 10^9)

출력

찾은 배치를 설명하는 두 정수를 출력한다. DrD_r의 최솟값과, 토큰이 놓인 칸에 적힌 값의 최솟값을 공백으로 구분해 출력한다.

예제2

  1. 예제 1

    입력
    3 3
    1 2 3
    2 1 2
    3 2 1
    
    예상 출력
    0
    1
    
  2. 예제 2

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