import sys input = sys.stdin.readline INF = 10**18 def solve(): n, s = map(int, input().split()) x = list(map(int, input().split())) w = list(map(int, input().split())) # 重みを位置で管理 buc = [0] * (10**6 + 1) total = 0 for xi, wi in zip(x, w): buc[xi] = wi total += wi assert xi != s left = [] right = [] for xi in x: if xi < s: left.append(xi) else: right.append(xi) right.reverse() L = len(left) R = len(right) # imos imos_L = [0] * (L + 1) imos_R = [0] * (R + 1) for i in range(L): imos_L[i + 1] = imos_L[i] + buc[left[i]] for i in range(R): imos_R[i + 1] = imos_R[i] + buc[right[i]] # dp[i][j][side] dp = [[[INF, INF] for _ in range(R + 1)] for __ in range(L + 1)] if L: dp[1][0][0] = 0 if R: dp[0][1][1] = 0 for i in range(L + 1): for j in range(R + 1): for side in (0, 1): cur = dp[i][j][side] if cur == INF: continue weight = imos_L[i] + imos_R[j] if side == 0: pos = left[i - 1] else: pos = right[j - 1] if i < L: dist = abs(pos - left[i]) v = cur + weight * dist if v < dp[i + 1][j][0]: dp[i + 1][j][0] = v if j < R: dist = abs(pos - right[j]) v = cur + weight * dist if v < dp[i][j + 1][1]: dp[i][j + 1][1] = v ans = INF if L: ans = min(ans, dp[L][R][0] + total * abs(s - left[-1])) if R: ans = min(ans, dp[L][R][1] + total * abs(s - right[-1])) print(ans) if __name__ == "__main__": solve()