func_code_string: #include <bits/stdc++.h>   using namespace std;   struct Time {     long long deno, num;     inline long long gcd(long long a, long long b) {       return !b ? a : gcd(b, a % b);     }     inline void simplify() {       long long g = gcd(abs(deno), abs(num));       deno /= g;       num /= g;       if (deno < 0) {         deno *= -1;         num *= -1;       }     }     Time() {}     Time(long long n, long long d) : num(n), deno(d) { simplify(); }     inline bool operator<(const Time &t) const {       return num * t.deno < t.num * deno;     }     inline bool operator!=(const Time &t) const {       return num * t.deno != t.num * deno;     }   };   pair<Time, Time> s[100010];   pair<Time, int> ds[100010];   int d[100010];   struct BIT {     int f[100010];     BIT() { fill(f, f + 100010, 0); }     inline int lowbit(int x) { return (x & -x); }     inline void add(int p, int v) {       for (++p; p < 100010; p += lowbit(p)) f[p] += v;     }     inline int sum(int p) {       int ret = 0;       for (++p; p; p -= lowbit(p)) ret += f[p];       return ret;     }     inline int sum(int l, int r) { return sum(r) - sum(l - 1); }   } bit;   int n, w;   long long v, x;   int main() {     cin >> n >> w;     for (int i = 0; i < n; i++) {       cin >> x >> v;       s[i] = make_pair(Time(-x, v - w), Time(-x, v + w));     }     for (int i = 0; i < n; i++) s[i].second.num *= -1;     sort(s, s + n);     for (int i = 0; i < n; i++) s[i].second.num *= -1;     for (int i = 0; i < n; i++) ds[i] = make_pair(s[i].second, i);     sort(ds, ds + n);     for (int i = 0, rk = -1; i < n; i++) {       if (!i || ds[i].first != ds[i - 1].first) rk++;       d[ds[i].second] = rk;     }     long long ans = 0;     for (int i = 0; i < n; i++) {       ans += bit.sum(d[i], 100010 - 1);       bit.add(d[i], 1);     }     cout << ans << endl;     return 0;   }   