func_code_string: #include <bits/stdc++.h>   using namespace std;   enum { MAXN = 100010 };   pair<long long, long long> d[MAXN];   int x[MAXN], t[MAXN];   long long minv[MAXN];   int solveB(int n) {     int mans = 0;     for (int i = 0; i < n; i++) {       int f = upper_bound(minv, minv + mans, d[i].second) - minv + 1;       if (f > mans) {         minv[mans] = d[i].second;         mans = f;       } else         minv[f - 1] = min(minv[f - 1], d[i].second);     }     return mans;   }   int solveA(int n) {     int mans = 1;     minv[0] = 0;     for (int i = 0; i < n; i++)       if (d[i].first >= 0) {         int f = upper_bound(minv, minv + mans, d[i].second) - minv + 1;         if (f > 1) {           if (f > mans) {             minv[mans] = d[i].second;             mans = f;           } else             minv[f - 1] = min(minv[f - 1], d[i].second);         }       }     return mans - 1;   }   int main() {     int n;     scanf( %d , &n);     for (int i = 0; i < n; i++) scanf( %d%d , &x[i], &t[i]);     int v;     scanf( %d , &v);     for (int i = 0; i < n; i++)       d[i] = make_pair(x[i] + (long long)t[i] * v, -x[i] + (long long)t[i] * v);     sort(d, d + n);     int ansA = solveA(n);     int ansB = solveB(n);     printf( %d n%d n , ansA, ansB);     return 0;   }   