고양이의 만족도

매시간 잠 또는 식사를 골라 총 즐거움을 최대로 만들되, 연속한 k시간마다 잠이 ms시간 이상, 식사가 me시간 이상이어야 한다.

어려움8동적 계획법슬라이딩 윈도우그리디누적 합아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

고양이가 모험을 떠난다.

고양이는 한 시간마다 잠을 자거나 밥을 먹는다. 같은 시간에 두 행동을 함께 하지는 못하고, 고른 행동 하나를 그 한 시간 내내 이어서 한다.

앞으로 다가올 nn시간에 대해, 각 시간에 잠을 자면 얻는 만족도와 밥을 먹으면 얻는 만족도를 모두 안다. 이 값은 시간마다 다를 수 있다.

정수 주기 kk도 주어진다. 연속한 kk시간 안에는 잠을 자는 시간이 msm_s시간 이상, 밥을 먹는 시간이 mem_e시간 이상 있어야 한다. 즉 길이가 kk인 구간 nk+1n - k + 1개가 모두 이 조건을 만족해야 한다.

앞으로 nn시간 동안 고양이가 얻는 만족도의 합이 최대가 되도록 할 때, 그 합을 구하라.

입력

첫째 줄에 정수 nn, kk, msm_s, mem_e가 주어진다 (1kn10001 \le k \le n \le 1000, 0ms,mek0 \le m_s, m_e \le k, ms+mekm_s + m_e \le k). 차례대로 앞으로 다가올 시간의 수, 주기의 길이(시간), 연속한 kk시간 안에서 잠을 자야 하는 최소 시간 수, 밥을 먹어야 하는 최소 시간 수다.

둘째 줄에 정수 nns1,s2,,sns_1, s_2, \dots, s_n이 주어진다 (0si1090 \le s_i \le 10^9). sis_iii번째 시간에 잠을 자서 얻는 만족도다.

셋째 줄에 정수 nne1,e2,,ene_1, e_2, \dots, e_n이 주어진다 (0ei1090 \le e_i \le 10^9). eie_iii번째 시간에 밥을 먹어서 얻는 만족도다.

출력

앞으로 nn시간 동안 고양이가 얻을 수 있는 만족도 합의 최댓값을 정수 하나로 출력한다.