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

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

건강한 식단

시간 제한4초메모리 제한1024 MB

요약
n x n 격자의 각 자판기에 대해 왼쪽 위에서 오른쪽 아래로 가는 최단 경로 중 그 자판기와 같은 상품을 파는 자판기를 가장 많이 포함하는 경로를 구하고, 그 개수별 자판기 수를 센다.
난이도

어려움10점 중 9점

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

문제

어떤 대학의 캠퍼스는 n×nn \times n 크기의 정사각형 격자이고, 각 칸에 건물이 하나씩 있다. 두 건물은 칸이 변을 공유하면 통로로 연결된다. 왼쪽 위 칸에는 학생 기숙사가, 오른쪽 아래 칸에는 강의동이 있다.

기숙사와 강의동을 포함한 모든 건물에는 정확히 한 종류의 상품만 파는 자판기가 하나씩 있다. 예를 들어 커피만 팔거나 고기 파이만 판다. 학생들은 매일 기숙사에서 강의동까지 통로를 따라 이동하며, 최단 경로 중 하나를 고른다.

대학 측은 학생들이 이동 중에 자판기에서 사는 음식의 다양성에 관심을 가졌다. 각 자판기 Ai,jA_{i,j} 에 대해, 이 자판기를 지나면서 Ai,jA_{i,j} 와 같은 상품을 파는 자판기를 최대한 많이 포함하는, 기숙사에서 강의동까지의 최단 경로를 찾으려 한다. 이 경로에 있는 그러한 자판기의 수를 Ai,jA_{i,j} 의 중복도라고 한다. 여기서 A1,1A_{1,1} 은 기숙사에, An,nA_{n,n} 은 강의동에 있다.

자판기가 파는 상품 정보가 주어졌을 때, 11 부터 2n−12n - 1 까지의 각 값에 대해 그 중복도를 가지는 자판기의 수를 구하는 프로그램을 작성하라.

입력

첫째 줄에는 정수 nn (2⩽n⩽15002 \leqslant n \leqslant 1500)이 주어진다. 다음 nn 개의 줄에는 각각 nn 개의 수가 있다. 이 중 ii 번째 줄의 jj 번째 수는 자판기 Ai,jA_{i,j} 가 파는 상품의 번호이다. 상품 번호는 11 부터 n2n^2 까지의 범위에 있다.

출력

출력에는 (2n−1)(2n-1) 개의 정수를, 중복도 1,2,…,2n−11, 2, \ldots, 2n - 1 을 가지는 자판기의 수를 각각 이 순서대로 출력한다.

예제2

  1. 예제 1

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

    입력
    5
    1 4 1 3 5
    2 1 4 1 2
    5 1 1 4 5
    3 5 1 1 2
    4 3 5 1 1
    
    예상 출력
    2 4 9 0 0 1 1 8 0