func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, m, i, j, k, l, tot, ans, v;   long long o, p;   long long f[110010];   struct rec {     long long x, y;   } a[100010];   bool cmp(rec x, rec y) { return x.x < y.x || ((x.x == y.x) && (x.y < y.y)); }   int find(int k, int l, long long x) {     while (k < l) {       int mid = (k + l) / 2;       if (f[mid] <= x)         k = mid + 1;       else         l = mid;     }     return k;   }   int main() {     cin >> n;     for (i = 0; i < n; i++) {       scanf( %I64d%I64d , &a[i].x, &a[i].y);     }     cin >> v;     for (i = 0; i < n; i++) {       o = a[i].x;       p = a[i].y;       a[i].x = -o + p * v;       a[i].y = o + p * v;     }     sort(a, a + n, cmp);     tot = 1;     f[0] = -1e12, f[1] = 1e12;     for (i = 0; i < n; i++) {       j = find(0, tot, a[i].y);       if (f[j] > a[i].y) f[j] = a[i].y;       if (j >= tot) f[++tot] = 1e12;     }     ans = tot - 1;     f[tot = 1] = 1e12;     for (i = 0; i < n; i++)       if ((a[i].x >= 0) && (a[i].y >= 0)) {         j = find(0, tot, a[i].y);         if (f[j] > a[i].y) f[j] = a[i].y;         if (j >= tot) f[++tot] = 1e12;       }     printf( %d %d n , tot - 1, ans);     cin >> n;     return 0;   }   