import java.util.Arrays;
import java.util.Scanner;
public class KeShui {
public static int max = 0;
//网易瞌睡
public static void maxivalue(int [] arr, int k,int [] ks){
int length = arr.length;
int tmp = k;
int sum = 0;
for (int i = 0; i < length; i++) {
if(ks[i] == 1){
sum += arr[i];
}
}
for (int i = 0; i < length;i++){ //滑动窗口
if(ks[i] == 0){
sum += arr[i];
}
if(i >= k - 1){
max = Math.max(max, sum);
if(ks[i - (k - 1)] == 0)
sum -= arr[i - (k - 1)];
}
}
}
//求一个数组中 三个相连的数的最大值
public static int get(int [] arr,int k){//最多有三个数之和的最大值 相当于一个滑动窗口
int max = Integer.MIN_VALUE;
int sum = 0;
for (int i = 0; i < arr.length; i++) {// 1 2 3 4 3 k-1=2
sum += arr[i];
max = Math.max(max, sum);
if(i >= k - 1)
sum -= arr[i - (k - 1)];
}
return max;
}
//除了他清醒外 最多清醒一次 并获取最大收益
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String [] str = sc.nextLine().trim().split(" ");
int [] arr = new int[str.length];
for (int i = 0; i < arr.length; i++) { // 6 3
arr[i] = Integer.parseInt(str[i]);
}
String [] cstr = sc.nextLine().trim().split(" ");
int [] carr = new int[cstr.length];
for (int i = 0; i < carr.length; i++) { //数值1 3 5 2 5 4
carr[i] = Integer.parseInt(cstr[i]);
}
String [] ccstr = sc.nextLine().trim().split(" ");
int [] ccarr = new int[ccstr.length];
for (int i = 0; i < ccarr.length; i++) { //数值 1 1 0 1 0 0
ccarr[i] = Integer.parseInt(ccstr[i]);
}
maxivalue(carr,arr[1],ccarr);
System.out.println(max);
}
// public static void main(String[] args) {
// int arr[] = {1,2,3,4,3,1,1,1,2,2,2,33,3,3,55};
// System.out.println(get(arr, 3));
// }
}