작은 꽃집
면접 대비시간 제한1초메모리 제한128 MB
순서가 정해진 F개의 꽃다발을 V개의 화병에 왼쪽부터 차례로 배치해 미적 가치의 합을 최대로 만들고, 그중 사전순으로 가장 앞선 배치를 출력한다.
- 난이도
보통10점 중 6점
- 유형
- 동적 계획법
- 정답자
- 아직 제출이 없습니다
문제
꽃집 진열창을 가장 보기 좋게 꾸미려고 한다. 서로 다른 종류의 꽃다발이 개 있고, 한 줄로 놓인 꽃병이 적어도 개 있다. 꽃병은 선반에 고정되어 있으며 왼쪽에서 오른쪽으로 번부터 번까지 번호가 매겨져 있다. 즉 번 꽃병이 가장 왼쪽, 번 꽃병이 가장 오른쪽이다. 꽃다발은 옮길 수 있으며 번부터 번까지의 정수로 구분된다.
이 번호는 놓이는 순서를 정한다. 이면 꽃다발 는 반드시 꽃다발 가 놓인 꽃병보다 왼쪽에 있는 꽃병에 놓여야 한다. 예를 들어 진달래(번), 베고니아(번), 카네이션(번)이 있다면, 진달래는 베고니아보다 왼쪽에, 베고니아는 카네이션보다 왼쪽에 놓여야 한다. 꽃병이 꽃다발보다 많으면 남는 꽃병은 비워 둔다. 꽃병 하나에는 꽃다발을 최대 하나만 놓을 수 있다.
꽃병마다 개성이 달라서, 특정 꽃다발을 특정 꽃병에 놓으면 정수로 표현되는 미적 가치가 생긴다. 꽃다발 를 꽃병 에 놓았을 때의 미적 가치를 라고 하자. 꽃병을 비워 두면 미적 가치는 이다.
예를 들어 미적 가치가 다음과 같다고 하자.
이 표에서 진달래는 꽃병 2에 두면 아주 보기 좋지만 꽃병 4에 두면 보기 흉하다.
정해진 순서를 지키면서 미적 가치의 합이 최대가 되도록 모든 꽃다발을 놓아라.
입력
- 첫째 줄에 두 정수 와 가 주어진다.
- 다음 개의 줄에는 각각 개의 정수가 주어진다. 번째 줄의 번째 정수는 꽃다발 를 꽃병 에 놓았을 때의 미적 가치 이다.
출력
- 첫째 줄에 얻을 수 있는 미적 가치 합의 최댓값을 출력한다.
- 둘째 줄에는 그 최댓값을 이루는 배치를 개의 정수로 출력한다. 번째 정수는 꽃다발 가 놓인 꽃병의 번호이다. 최댓값을 이루는 배치가 여러 개이면 사전순으로 가장 작은 것을 출력한다. 즉 꽃다발 의 꽃병 번호를 차례로 나열한 수열을 비교하여, 처음으로 달라지는 위치에서 더 작은 수열을 출력한다.
제한
- 이며, 는 꽃다발의 개수로 꽃다발은 번부터 번까지 번호가 매겨진다.
- 이며, 는 꽃병의 개수이다.
- 이며, 는 꽃다발 를 꽃병 에 놓았을 때의 미적 가치이다.