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

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

최대 합

면접 대비

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

요약
정수로 채워진 m×n 격자에서 테두리 위 칸들의 합이 가장 큰 직사각형을 찾아 그 합과 네 모서리 좌표를 출력한다.
난이도

보통10점 중 6점

유형
누적 합, 완전 탐색, 구현, 배열
정답자
아직 제출이 없습니다

문제

오늘 <<수학적 여가>> 신문 지면에 색다른 수학 퍼즐이 실렸다. 신문의 한 페이지는 mm개의 행과 nn개의 열로 이루어진 직사각형 표로 가득 차 있다. 표의 각 칸에는 정수가 하나씩 적혀 있다.

퍼즐을 풀려면 표의 칸 중심을 꼭짓점으로 하고 변이 표의 변과 평행한 비퇴화 직사각형 중에서, 그 둘레에 있는 칸에 적힌 수의 합이 최대가 되는 것을 찾아야 한다.

몇 시간 동안 퍼즐을 풀다가 실패한 사샤는 이 일을 대신해 줄 프로그램을 작성하기로 했다. 그러나 이번에도 실패하고 말았다. 이제 그는 여러분에게 도움을 청할 수밖에 없다.

주어진 표에서 조건에 맞는 직사각형을 찾는 프로그램을 작성하라.

입력

첫째 줄에 두 정수 mm과 nn이 주어진다 (2≤m,n≤3002 \le m, n \le 300). 다음으로 표의 정보가 주어진다. mm개의 줄이 이어지며, 각 줄에는 nn개의 정수 ai,ja_{i,j}가 주어진다 (−104≤ai,j≤104-10^4 \le a_{i,j} \le 10^4).

출력

첫째 줄에 찾은 직사각형 둘레에 있는 수의 최대 합 ss를 출력한다. 둘째 줄에 선택한 직사각형의 왼쪽 위 칸과 오른쪽 아래 칸의 좌표 x1,y1,x2,y2x_1, y_1, x_2, y_2를 출력한다. 여기서 xx는 행 번호, yy는 열 번호이며, 행은 위에서 아래로 1부터, 열은 왼쪽에서 오른쪽으로 1부터 번호를 매긴다. 최적해가 여러 개라면 그중 아무거나 출력한다.

예제2

  1. 예제 1

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

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