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

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

작은 꽃집

면접 대비

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

요약
순서가 정해진 F개의 꽃다발을 V개의 화병에 왼쪽부터 차례로 배치해 미적 가치의 합을 최대로 만들고, 그중 사전순으로 가장 앞선 배치를 출력한다.
난이도

보통10점 중 6점

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

문제

꽃집 진열창을 가장 보기 좋게 꾸미려고 한다. 서로 다른 종류의 꽃다발이 FF개 있고, 한 줄로 놓인 꽃병이 적어도 FF개 있다. 꽃병은 선반에 고정되어 있으며 왼쪽에서 오른쪽으로 11번부터 VV번까지 번호가 매겨져 있다. 즉 11번 꽃병이 가장 왼쪽, VV번 꽃병이 가장 오른쪽이다. 꽃다발은 옮길 수 있으며 11번부터 FF번까지의 정수로 구분된다.

이 번호는 놓이는 순서를 정한다. i<ji < j이면 꽃다발 ii는 반드시 꽃다발 jj가 놓인 꽃병보다 왼쪽에 있는 꽃병에 놓여야 한다. 예를 들어 진달래(11번), 베고니아(22번), 카네이션(33번)이 있다면, 진달래는 베고니아보다 왼쪽에, 베고니아는 카네이션보다 왼쪽에 놓여야 한다. 꽃병이 꽃다발보다 많으면 남는 꽃병은 비워 둔다. 꽃병 하나에는 꽃다발을 최대 하나만 놓을 수 있다.

꽃병마다 개성이 달라서, 특정 꽃다발을 특정 꽃병에 놓으면 정수로 표현되는 미적 가치가 생긴다. 꽃다발 ii를 꽃병 jj에 놓았을 때의 미적 가치를 Ai,jA_{i,j}라고 하자. 꽃병을 비워 두면 미적 가치는 00이다.

예를 들어 미적 가치가 다음과 같다고 하자.

꽃병 1꽃병 2꽃병 3꽃병 4꽃병 5
1 (진달래)723-5-2416
2 (베고니아)521-41023
3 (카네이션)-215-4-2020

이 표에서 진달래는 꽃병 2에 두면 아주 보기 좋지만 꽃병 4에 두면 보기 흉하다.

정해진 순서를 지키면서 미적 가치의 합이 최대가 되도록 모든 꽃다발을 놓아라.

입력

  • 첫째 줄에 두 정수 FF와 VV가 주어진다.
  • 다음 FF개의 줄에는 각각 VV개의 정수가 주어진다. (i+1)(i+1)번째 줄의 jj번째 정수는 꽃다발 ii를 꽃병 jj에 놓았을 때의 미적 가치 Ai,jA_{i,j}이다.

출력

  • 첫째 줄에 얻을 수 있는 미적 가치 합의 최댓값을 출력한다.
  • 둘째 줄에는 그 최댓값을 이루는 배치를 FF개의 정수로 출력한다. kk번째 정수는 꽃다발 kk가 놓인 꽃병의 번호이다. 최댓값을 이루는 배치가 여러 개이면 사전순으로 가장 작은 것을 출력한다. 즉 꽃다발 1,2,…,F1, 2, \dots, F의 꽃병 번호를 차례로 나열한 수열을 비교하여, 처음으로 달라지는 위치에서 더 작은 수열을 출력한다.

제한

  • 1≤F≤1001 \le F \le 100이며, FF는 꽃다발의 개수로 꽃다발은 11번부터 FF번까지 번호가 매겨진다.
  • F≤V≤100F \le V \le 100이며, VV는 꽃병의 개수이다.
  • −50≤Ai,j≤50-50 \le A_{i,j} \le 50이며, Ai,jA_{i,j}는 꽃다발 ii를 꽃병 jj에 놓았을 때의 미적 가치이다.

예제4

  1. 예제 1

    입력
    3 5
    7 23 -5 -24 16
    5 21 -4 10 23
    -21 5 -4 -20 20
    
    예상 출력
    53
    2 4 5
    
  2. 예제 2

    입력
    1 1
    5
    
    예상 출력
    5
    1
    
  3. 예제 3

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

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