Top 2000

면접 대비

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

요약
정해진 순서의 곡들을 연속한 구간으로 나누어 각 구간이 M분을 넘거나 모자랄 때 분당 벌점을 물도록 하고, 총 벌점이 최소가 되게 만든다.
난이도

보통10점 중 7점

유형
동적 계획법, 누적 합, 배열, 슬라이딩 윈도우
정답자
아직 제출이 없습니다

문제

한 라디오 방송국이 카운트다운 차트를 방송한다. 차트는 정해진 순서대로 재생해야 하는 싱글(곡)들의 목록으로, 인기가 가장 낮은 곡부터 가장 높은 곡까지 순서가 고정되어 있다. 각 싱글의 길이는 분 단위 정수로 주어진다.

방송은 길이가 MM분인 동일한 블록들로 나뉜다(매시간 광고와 뉴스를 위해 몇 분이 빠지므로 한 블록은 한 시간보다 짧다). 싱글은 순서대로 블록에 배정된다. 각 블록은 목록에서 연속된 구간의 싱글들을 받고, 어떤 싱글도 두 블록에 걸쳐 나뉘지 않으며, 모든 싱글은 정확히 하나의 블록에서 한 번만 재생된다. 블록의 개수는 고정되어 있지 않지만 정수여야 하고, 모든 블록은 완전해야 한다. 즉 블록들이 모든 싱글을 빠짐없이 담아야 한다.

한 블록에 배정된 싱글들의 총 길이가 정확히 MM분이 되는 경우는 드물다.

  • 총 길이가 MM분을 넘으면 모두 온전히 재생할 수 없어 일부를 잘라내야 한다. 잘라낸 1분마다 AA의 벌점이 발생한다. 모든 싱글은 최소 1초는 재생되어야 하므로, 어떤 싱글도 완전히 빠지지는 않는다.
  • 총 길이가 MM분보다 짧으면 남는 시간은 DJ의 말로 채운다. 채운 1분마다 BB의 벌점이 발생한다.

따라서 총 길이가 LL분인 블록의 벌점은 L>ML > M이면 A⋅(L−M)A \cdot (L - M), L<ML < M이면 B⋅(M−L)B \cdot (M - L), L=ML = M이면 00이다.

모든 싱글을 블록들로 배치하여 전체 블록에 대한 벌점의 합이 최소가 되도록 하라.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. 각 테스트 케이스는 세 줄로 이루어진다.

  • 첫 줄에 두 정수 NN과 MM이 공백으로 구분되어 주어진다(1≤N≤500001 \le N \le 50000, 15≤M≤10015 \le M \le 100). 각각 싱글의 개수와 한 블록의 길이(분)이다.
  • 둘째 줄에 두 정수 AA와 BB가 주어진다(1≤A,B≤10001 \le A, B \le 1000). 각각 잘라낸 음악 1분당 벌점과 DJ가 채운 1분당 벌점이다.
  • 셋째 줄에 NN개의 정수가 주어진다. 재생해야 하는 순서대로 각 싱글의 길이(분)이며, 각 길이 xx는 1≤x≤201 \le x \le 20을 만족한다.

출력

각 테스트 케이스마다 한 줄에 정수 하나를 출력한다. 그 차트를 배치할 때 얻을 수 있는 최소 전체 벌점이다.

예제1

  1. 예제 1

    입력
    3
    10 25
    2 1
    8 7 3 5 4 2 9 4 3 4
    16 55
    4 1
    14 9 13 13 6 15 7 8 13 7 5 11 10 11 9 14
    15 28
    1 2
    7 9 7 5 8 7 6 10 5 9 7 9 6 10 5
    
    예상 출력
    4
    0
    19