#include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; const ll MOD = 1000000007; struct Node { int id; ll val; Node(int id = -1, ll val = -1) { this->id = id; this->val = val; } bool operator>(const Node &n) const { return val > n.val; } }; int main() { int N, K; cin >> N >> K; vector X; ll x; for (int i = 0; i < N; ++i) { cin >> x; X.push_back(x); } vector A; ll a; for (int i = 0; i < N; ++i) { cin >> a; A.push_back(a); } priority_queue , greater> pque; for (int i = 0; i < N; ++i) { x = X[i]; a = A[i]; pque.push(Node(i, abs(x - X[K - 1]))); } ll l = X[K - 1]; ll r = X[K - 1]; int ans = 0; while (!pque.empty()) { Node node = pque.top(); pque.pop(); x = X[node.id]; a = A[node.id]; if (l <= x && x <= r) { ++ans; l = min(l, x - a); r = max(r, x + a); } } cout << ans << endl; return 0; }