만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

고양이 목에 리본 달기

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

요약
고양이 N마리와 리본 K종류의 만족도가 주어졌을 때, 이웃한 고양이가 같은 리본을 매지 않는 조건에서 만족도 합의 최댓값을 구합니다.
난이도

보통10점 중 5점

유형
동적 계획법, 배열
정답자
아직 제출이 없습니다

문제

외로운 윤제는 고양이를 키우기로 했다.

NN마리의 고양이를 입양하기로 한 윤제는 고양이들에게 리본을 달아주기 위해 KK종류의 리본을 충분히 준비했다. 각 리본의 개수는 무한하다. 고양이마다 리본 종류에 따라 좋아하는 정도가 다르며, 이를 만족도로 나타낼 수 있다.

고양이들을 번호순으로 한 줄로 세워 리본을 달아주려 한다. 각 고양이는 자신과 이웃한(왼쪽 혹은 오른쪽) 고양이와 같은 종류의 리본을 다는 것을 굉장히 싫어한다. 윤제는 고양이들이 싫어하는 상황을 피하면서 각 고양이의 리본 만족도 총합을 최대로 만들고 싶다.

이 조건을 만족하는 만족도 합의 최댓값을 구하여라.

입력

첫 번째 줄에 고양이의 수 NN과 리본 종류의 수 KK가 공백으로 구분되어 주어진다. (1≤N≤100,2≤K≤10 000)(1 \leq N \leq 100, 2 \leq K \leq 10\,000)

다음 NN개의 줄에는 각각 KK개의 정수 ai,1,⋯ ,ai,Ka_{i,1}, \cdots, a_{i,K}이 공백으로 구분되어 주어진다. (1≤ai,j≤10 000)(1 \leq a_{i,j} \leq 10\,000) ai,ja_{i,j}는 ii번 고양이가 jj번 리본을 달았을 때의 만족도를 의미한다.

출력

고양이들이 싫어하는 상황을 피하면서 리본을 달았을 때, 각 고양이 만족도 총합의 최댓값을 출력한다.

예제2

  1. 예제 1

    입력
    3 3
    10 20 30
    30 20 10
    20 30 10
    
    예상 출력
    90
    
  2. 예제 2

    입력
    3 3
    10 20 30
    10 20 40
    10 20 20
    
    예상 출력
    80