고양이 목에 리본 달기
시간 제한1초메모리 제한1024 MB
고양이 N마리와 리본 K종류의 만족도가 주어졌을 때, 이웃한 고양이가 같은 리본을 매지 않는 조건에서 만족도 합의 최댓값을 구합니다.
문제
외로운 윤제는 고양이를 키우기로 했다.
마리의 고양이를 입양하기로 한 윤제는 고양이들에게 리본을 달아주기 위해 종류의 리본을 충분히 준비했다. 각 리본의 개수는 무한하다. 고양이마다 리본 종류에 따라 좋아하는 정도가 다르며, 이를 만족도로 나타낼 수 있다.
고양이들을 번호순으로 한 줄로 세워 리본을 달아주려 한다. 각 고양이는 자신과 이웃한(왼쪽 혹은 오른쪽) 고양이와 같은 종류의 리본을 다는 것을 굉장히 싫어한다. 윤제는 고양이들이 싫어하는 상황을 피하면서 각 고양이의 리본 만족도 총합을 최대로 만들고 싶다.
이 조건을 만족하는 만족도 합의 최댓값을 구하여라.
입력
첫 번째 줄에 고양이의 수 과 리본 종류의 수 가 공백으로 구분되어 주어진다.
다음 개의 줄에는 각각 개의 정수 이 공백으로 구분되어 주어진다. 는 번 고양이가 번 리본을 달았을 때의 만족도를 의미한다.
출력
고양이들이 싫어하는 상황을 피하면서 리본을 달았을 때, 각 고양이 만족도 총합의 최댓값을 출력한다.