[BOJ 10907] On grid
View as PDF
Submit solution
Assembly, Awk, C, C++, Java, Pascal, Perl, Python, Sed, Text
Points:
4
Time limit:
1.0s
Memory limit:
256M
Problem types
Allowed languages
명우는 각 칸 위에 정수가 하나씩 적혀 있는 R 행 C 열의 격자를 하나 가지고 있다. 또한, 명우는 매우 다양한 크기의 직사각형 판들을 가지고 있어서 주어진 격자를 여러 개의 직사각형 판으로 덮는 놀이를 하려고 한다. 명우는 다음과 같이 규칙을 정했다.</p>
격자를 직사각형 판으로 덮을 때는 격자와 평행하게 덮어야 하며, 어떤 격자 칸의 일부만 덮는 것은 허용되지 않는다. 처음에 직사각형 판을 덮을 때에는 첫 번째 행의 첫 번째 열을 무조건 포함하도록 판을 덮어야 한다. 다음에 덮는 직사각형부터는 바로 직전에 덮은 직사각형의 오른쪽 아래 꼭짓점에 닿도록 직사각형 판을 덮어야 한다. 이때 서로의 모서리는 닿으면 안 된다. 그리고 마지막으로 덮는 직사각형은 R 번째 행의 C 번째 열을 무조건 포함하게 덮어야 한다. 오른쪽의 그림은 8행 8열의 격자 위에 직사각형 판을 잘 덮은 예이다.
격자를 직사각형 판들로 덮은 뒤에 명우는 점수를 계산하는데 이는 직사각형에 덮인 격자 칸들에 적힌 정수를 모두 더한 값이다. 명우가 가진 격자가 주어질 때, 점수를 최대화하여 직사각형을 덮으면 몇 점이 될지 구하여라.
입력 형식
첫 번째 줄에는 두 자연수 R, C가 주어진다.</p>
다음 R개의 줄에는 절댓값이 104을 넘지 않는 C개의 정수가 공백으로 구분되어 주어진다.
1 ≤ R, C ≤ 300인 입력이 주어진다.
출력 형식
격자를 직사각형 판들로 덮을 때 얻을 수 있는 가장 큰 점수를 출력한다.
예제 입력 1
2 2
1 -1
-1 1
예제 출력 1
2
예제 입력 2
5 5
4 -2 3 -4 2
-2 1 1 4 -2
-3 1 -1 2 5
2 -4 2 3 5
1 -4 4 -1 -2
예제 출력 2
22
Comments