func_code_string: #include <bits/stdc++.h>   using namespace std;   const int Maxn = 300000;   long long n, x[Maxn], w[Maxn], Index[Maxn], nx[Maxn];   set<pair<long long, long long> > poi, xx;   set<pair<long long, long long> > u;   void input() {     cin >> n;     for (int i = 0; i < n; i++) {       cin >> x[i] >> w[i];       xx.insert(make_pair(x[i], i));       poi.insert(make_pair(x[i] - w[i], i));     }   }   void solve() {     long long k = 0;     for (auto c : poi) {       Index[c.second] = k;       k++;     }     for (auto c : xx) {       long long ind = c.second;       poi.erase(make_pair(x[ind] - w[ind], ind));       long long sum = x[ind] + w[ind];       auto limIt = poi.lower_bound(make_pair(sum, 0));       if (limIt != poi.end()) {         auto lim = *limIt;         nx[Index[ind]] = Index[lim.second];         u.insert(make_pair(Index[lim.second], Index[ind]));       } else         nx[Index[ind]] = -1;     }     int ans = 1, last = 0;     while (((int)u.size())) {       auto c = (*u.begin()).first;       ans++;       for (; last < c; last++)         if (nx[last] >= 0) u.erase(make_pair(nx[last], last));     }     cout << ans << endl;   }   int main() {     ios::sync_with_stdio(0);     cin.tie();     input();     solve();     return 0;   }   