#include using namespace std; using lint = long long; template using V = vector; template using VV = V< V >; int main() { cin.tie(nullptr); ios::sync_with_stdio(false); int n, k; cin >> n >> k, --k; V x(n); for (auto&& e : x) cin >> e; V a(n); for (auto&& e : a) cin >> e; VV<> g(2 * n); for (int i = 0; i < n; ++i) { int l = lower_bound(begin(x), end(x), x[i] - a[i]) - begin(x); int r = upper_bound(begin(x), end(x), x[i] + a[i]) - begin(x); l += n, r += n; while (l < r) { if (l & 1) { g[n + i].push_back(l++); } if (r & 1) { g[n + i].push_back(--r); } l >>= 1, r >>= 1; } } for (int i = 1; i < n; ++i) { g[i].push_back(2 * i); g[i].push_back(2 * i + 1); } int res = 0; bitset<200000> vis; auto dfs = [&](const auto& dfs, int v) -> void { vis[v] = true; res += v >= n; for (int w : g[v]) if (!vis[w]) { dfs(dfs, w); } }; dfs(dfs, n + k); cout << res << '\n'; }