만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

Rolete

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

요약
h마다 모든 블라인드를 h cm 이하로 내리는 최소 시간을 구합니다. 수동으로 올리면 1cm당 t초가 들고, 버튼은 1cm당 s초이며 끝에 닿은 블라인드가 r개면 나머지는 1cm당 s+k*r초가 걸립니다.
난이도

보통10점 중 6점

유형
정렬, 누적 합, 그리디, 이분 탐색
정답자
아직 제출이 없습니다

문제

토요일 오후, 낮잠에서 깬 루카는 오늘이 COCI 대회 날이라는 것을 떠올렸다. 대회 전에 해야 할 일은 블라인드를 올리는 것 하나뿐이었다.

루카의 방에는 블라인드가 nn개 있다. ii번째 블라인드는 창문 위쪽에서 aia_icm 내려와 있다. 루카는 다음 두 가지 방법으로 블라인드를 올릴 수 있다.

  • 블라인드 하나를 골라 직접 올릴 수 있다. 이 방법은 1cm를 올리는 데 tt초가 걸린다.
  • 버튼을 누를 수 있다. 버튼을 누르면 모든 블라인드가 같은 속도로 동시에 올라간다.

아직 올라가는 블라인드가 모두 남아 있으면, 버튼으로 블라인드 하나를 1cm 올리는 데 ss초가 걸린다. 이미 rr개의 블라인드가 꼭대기에 도달했다면 시스템이 느려져서, 남은 블라인드 하나를 1cm 올리는 데 s+k⋅rs + k \cdot r초가 걸린다.

동생 마린이 방에 들어와 질문 qq개를 했다. 각 질문은 모든 블라인드가 최대 hhcm 아래에 있도록 하려면 최소 몇 초가 걸리는지 묻는다. 마린은 블라인드의 초기 상태를 기준으로 질문한다.

루카는 블라인드를 항상 정수 cm 단위로 올린다.

입력

첫 줄에 정수 nn, tt, ss, kk가 주어진다 (1≤n,t,s≤1051 \le n, t, s \le 10^5, 0≤k≤1050 \le k \le 10^5). 각각 블라인드의 개수, 직접 1cm 올리는 데 걸리는 시간, 버튼으로 1cm 올리는 데 걸리는 시간, 동시에 올릴 때의 감속 계수이다.

둘째 줄에 블라인드의 초기 상태 aia_i (0≤ai≤1050 \le a_i \le 10^5)가 nn개 주어진다.

셋째 줄에 질문의 개수 qq (1≤q≤1051 \le q \le 10^5)가 주어진다.

넷째 줄에 각 질문의 최대 허용 높이 hih_i (0≤hi≤1050 \le h_i \le 10^5)가 qq개 주어진다.

출력

한 줄에 qq개의 수를 출력한다. ii번째 수는 모든 블라인드가 최대 hih_icm 아래에 있도록 하는 최소 시간이다.

예제3

  1. 예제 1

    입력
    3 2 5 1
    2 2 4
    3
    2 0 1
    
    예상 출력
    4 14 9
    
  2. 예제 2

    입력
    2 3 4 0
    3 1
    3
    3 2 0
    
    예상 출력
    0 3 10
    
  3. 예제 3

    입력
    4 3 10 3
    2 4 5 6
    3
    4 3 0
    
    예상 출력
    9 18 47