import sys, math sys.setrecursionlimit(10**8) sys.set_int_max_str_digits(0) INF = 10**18 MOD = 998244353 from bisect import bisect_left, bisect_right from collections import deque, defaultdict, Counter from itertools import product, combinations, permutations, groupby, accumulate from heapq import heapify, heappop, heappush def I(): return sys.stdin.readline().rstrip() def II(): return int(sys.stdin.readline().rstrip()) def IS(): return sys.stdin.readline().rstrip().split() def MII(): return map(int, sys.stdin.readline().rstrip().split()) def LI(): return list(sys.stdin.readline().rstrip()) def TII(): return tuple(map(int, sys.stdin.readline().rstrip().split())) def LII(): return list(map(int, sys.stdin.readline().rstrip().split())) def LSI(): return list(map(str, sys.stdin.readline().rstrip().split())) def GMI(): return list(map(lambda x: int(x) - 1, sys.stdin.readline().rstrip().split())) def kiriage(a, b): return (a+b-1)//b N, K = MII() X = LII() A = LII() done = [False] * N que = deque() que.append(K - 1) done[K - 1] = True while que: idx = que.popleft() pos = X[idx] # 座標が pos - A[idx] 以上の最小の点はどこか? cur = bisect_left(X, pos - A[idx]) # left から右に向かって、done が True になるまでチェックする while True: if done[cur]: break done[cur] = True que.append(cur) cur += 1 # 座標が pos + A[idx] 以下の最大の点はどこか? cur = bisect_right(X, pos + A[idx]) - 1 while True: if done[cur]: break done[cur] = True que.append(cur) cur -= 1 ans = done.count(True) print(ans)