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

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

체스로 도미노를 타자

시간 제한3초메모리 제한128 MB

요약
N행 3열 정수 보드에 K개의 도미노를 겹치지 않게 놓아 가려진 칸 숫자의 합을 가장 크게 합니다.
난이도

보통10점 중 7점

유형
동적 계획법, 비트 연산
정답자
아직 제출이 없습니다

문제

상근이에게는 NN행 3열짜리 체스판이 하나 있다.

상근이가 잠깐 자리를 비운 사이에 창영이는 체스판의 모든 칸에 정수를 하나씩 써 놓고, 바닥에 도미노 KK개를 늘어놓은 채 달아났다.

집에 돌아온 상근이는 아끼던 체스판에 정수가 적힌 것을 보고 크게 상심했다.

창영이는 상근이가 슬퍼하는 모습을 차마 볼 수 없어서, 도미노 KK개를 모두 써서 체스판을 덮기로 했다. 도미노 한 개의 크기는 2×12 \times 1이고, 회전시킬 수 있다. 도미노끼리 겹칠 수는 없고, 도미노 하나는 항상 체스판의 두 칸을 덮어야 한다. 체스판을 빈칸 없이 덮을 필요는 없지만, 도미노 KK개는 하나도 남기지 않고 놓아야 한다.

도미노를 놓는 방법은 여러 가지다. 도미노가 덮은 칸에 적힌 수를 모두 더했을 때 나올 수 있는 합의 최댓값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 NN과 KK가 주어진다. (1≤N≤10001 \le N \le 1000, 1≤K≤10001 \le K \le 1000)

다음 NN개 줄에는 체스판의 각 행에 적힌 수 세 개가 첫째 행부터 차례대로 주어진다. 모든 수는 절댓값이 10610^6보다 작은 정수이다.

도미노 KK개를 항상 놓을 수 있도록, 입력은 2K≤3N2K \le 3N을 만족한다.

출력

첫째 줄에 도미노 KK개가 덮은 칸에 적힌 수의 합의 최댓값을 출력한다.

예제2

  1. 예제 1

    입력
    5 3
    2 1 -1
    1 3 2
    0 2 3
    2 1 1
    3 3 0
    
    예상 출력
    16
    
  2. 예제 2

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