너 재능 있어

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

요약
N번의 승리와 M번의 패배 순서를 정해 최종 점수를 최대로 만든다. 점수가 aK+b (0<b<K)일 때 패배는 min(L_j, b)만 잃는다.
난이도

보통10점 중 7점

유형
동적 계획법, 그리디, 정렬
정답자
아직 제출이 없습니다

문제

리그 오브 레전드(이하 롤)를 즐기는 민우는 자기보다 롤을 못하는 민석이를 도발했다.

너? 재능 있어. 열심히 해.

민석이는 너무 분하여 어떻게 하면 점수를 효율적으로 올릴 수 있는지 연구하기 시작했다. 철저한 자기 객관화가 가능한 민석이는 앞으로의 게임에서 NN번의 승리와 MM번의 패배를 하게 될 것이란 사실을 알고 있다. 민석이는 ii번째 승리를 하게 된다면 W_iW\_{i}만큼의 점수를 얻게 되고, jj번째 패배를 하게 된다면 L_jL\_{j}만큼의 점수를 잃게 된다. 민석이의 점수는 00점에서 시작하고, 점수는 음수가 될 수 있다.

롤에는 민석이와 같은 하수들이 한 번에 너무 큰 점수를 잃지 않도록 매 KK점마다 점수 보호권이 존재한다. 정수 aa와 0<b<K0< b < K를 만족하는 정수 bb에 대하여, 민석이의 현재 점수가 a×K+ba\times K+b라고 하자. 만약 민석이가 이 상태에서 jj번째 패배를 당했다면, 현재 점수에서 bb점을 초과하여 잃지 않는다. 다시 말해, 민석이는 min⁡(L_j,b)\min(L\_{j},b)만큼의 점수를 잃게 된다. 만약 현재 점수가 a×Ka\times K라면, L_jL\_{j}만큼의 점수를 잃게 됨에 유의하자.

당연하게도 민석이는 N+MN+M번의 게임 후 가장 높은 점수를 얻고 싶다. 민석이를 도와주자.

입력

첫 번째 줄에 승리 시 얻을 수 있는 점수를 나타내는 배열 WW의 길이 NN이 주어진다. (1≤N≤1,000)(1\leq N \leq 1\\,000)

두 번째 줄에 WW의 원소 NN개가 공백으로 구분되어 주어진다. WW의 모든 원소는 11 이상 100100 이하의 정수다.

세 번째 줄에 패배 시 잃게 되는 점수를 나타내는 배열 LL의 길이 MM이 주어진다. (1≤M≤1,000)(1\leq M \leq 1\\,000)

네 번째 줄에 LL의 원소 MM개가 공백으로 구분되어 주어진다. LL의 모든 원소는 11 이상 100100 이하의 정수다.

다섯 번째 줄에 점수 보호를 위한 정수 KK가 주어진다. (100≤K≤1,000)(100\leq K \leq 1\\,000)

출력

NN번의 승리와 MM번의 패배를 한 후 민석이가 얻을 수 있는 점수의 최댓값을 출력한다.

예제3

  1. 예제 1

    입력
    4
    50 30 70 90
    2
    100 100
    110
    
    예상 출력
    160
    
  2. 예제 2

    입력
    2
    27 51
    4
    44 62 7 16
    101
    
    예상 출력
    -23
    
  3. 예제 3

    입력
    1
    100
    1
    49
    100
    
    예상 출력
    51