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

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

섬 건너가기

면접 대비

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

요약
무게 제한 안에서 최대 두 명씩 함께 태우거나 각자 따로 보내면서 전체 요금이 가장 낮아지는 조합을 구합니다.
난이도

보통10점 중 5점

유형
그리디, 정렬, 투 포인터
정답자
아직 제출이 없습니다

문제

헥토르와 친구들은 근처 호수 한가운데에 있는 섬으로 소풍을 가기로 했습니다. 섬으로 건너가려면 작은 나룻배 대여 업체의 배를 이용해야 합니다.

이 업체는 두 종류의 배를 빌려줍니다.

  • 1종 배는 한 번에 최대 두 명까지 태울 수 있으며, 두 사람의 몸무게 합이 MM kg을 넘으면 안 됩니다. 1종 배를 한 번 이용하는 비용은 AA입니다.
  • 2종 배는 더 튼튼하지만 좌석이 하나뿐이라 한 번에 한 명만 태울 수 있습니다. 몸무게에 상관없이 아무나 한 명을 태울 수 있으며, 한 번 이용하는 비용은 BB입니다.

각 참가자의 몸무게가 주어질 때, 모든 참가자를 섬으로 실어 나르는 데 드는 최소 총비용을 구하세요.

입력

첫째 줄에 테스트 세트의 개수를 나타내는 자연수 ZZ (1≤Z≤101 \le Z \le 10)가 주어집니다. 이어서 각 테스트 세트가 차례로 주어집니다.

각 테스트 세트의 첫째 줄에는 공백으로 구분된 네 자연수 NN, AA, BB, MM (1≤N,M≤1061 \le N, M \le 10^6, 1≤A,B≤10001 \le A, B \le 1000)이 주어집니다. 각각 소풍 참가자 수, 1종 배를 한 번 이용하는 비용, 2종 배를 한 번 이용하는 비용, 1종 배에 탄 승객들의 몸무게 합의 최댓값을 뜻합니다.

각 테스트 세트의 둘째 줄에는 공백으로 구분된 NN개의 자연수 wiw_i (1≤wi≤1061 \le w_i \le 10^6)가 주어지며, 각 참가자의 몸무게를 나타냅니다.

출력

각 테스트 세트마다 모든 참가자를 섬으로 실어 나르는 최소 총비용을 한 줄에 하나씩 출력하세요.

예제1

  1. 예제 1

    입력
    2
    3 3 2 100
    55 80 45
    3 3 2 100
    55 80 50
    
    예상 출력
    5
    6