func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, V;   pair<int, int> a[111111];   int x[111111], t[111111], b[111111], f[111111];   int ans1, ans2;   int main() {     scanf( %d , &n);     for (int i = 1; i <= n; ++i) scanf( %d%d , &x[i], &t[i]);     cin >> V;     for (int i = 1; i <= n; ++i)       t[i] *= V, a[i] = make_pair(t[i] + x[i], t[i] - x[i]);     sort(a + 1, a + 1 + n);     b[0] = -2000000000;     for (int i = 1; i <= n; ++i) b[i] = 2000000000;     for (int i = 1; i <= n; ++i) {       f[i] = lower_bound(b, b + 1 + n, a[i].second + 1) - b;       b[f[i]] = min(b[f[i]], a[i].second);       ans2 = max(ans2, f[i]);     }     int fd = 0;     for (int i = 1; i <= n; ++i)       if (a[i].first == 0 && a[i].second == 0) fd = i;     if (!fd) a[++n] = make_pair(0, 0);     sort(a + 1, a + 1 + n);     for (int i = 1; i <= n; ++i)       if (a[i].first == 0 && a[i].second == 0) fd = i;     for (int i = 0; i <= n; ++i) b[i] = 2000000000;     b[(ans1 = f[fd] = 0)] = a[fd].second;     for (int i = fd + 1; i <= n; ++i) {       if (a[i].second >= 0) {         f[i] = lower_bound(b, b + 1 + n, a[i].second + 1) - b;         b[f[i]] = min(b[f[i]], a[i].second);         ans1 = max(ans1, f[i]);       }     }     printf( %d %d n , ans1, ans2);   }   