#include #include #include using namespace std; typedef long long s8; struct Frog { s8 pos; s8 vol; bool check = false; }; list getResList(Frog *f, s8 *n, s8 *k) { list res; for(int i = *k - 1; i >= 0; i--) { if(abs(f[i].pos - f[(*k)].pos) <= f[(*k)].vol) res.push_back(i); else break; } for(int i = *k + 1; i < *n; i++) { if(abs(f[i].pos - f[(*k)].pos) <= f[(*k)].vol) res.push_back(i); else break; } return res; } int solve(Frog *f, s8 *n, s8 *k) { int ans = 0; list res = getResList(f, n, k); for(auto i = res.begin(); i != res.end(); i++) { if(f[(*i)].check) continue; f[(*i)].check = true; ans++; ans += solve(f, n, &(*i)); } return ans; } int main() { s8 n, k; cin >> n >> k; k--; Frog frog[n]; for(int i = 0; i < n; i++) { cin >> frog[i].pos; } for(int i = 0; i < n; i++) { cin >> frog[i].vol; } int ans = 1; frog[k].check = true; ans += solve(frog, &n, &k); cout << ans << endl; }