만드는 중입니다

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

너 재능 있어

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

요약
승리 점수 N개와 패배 점수 M개, 보호 간격 K가 주어질 때 N+M판을 모두 치른 뒤 얻을 수 있는 최고 점수를 구합니다.
난이도

보통10점 중 7점

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

문제

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

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

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

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