#include <bits/stdc++.h>
using namespace std;
int n;
long long w, ans = 0;
struct T {
  long long x, v;
} a[100005], b[100005];
inline long long ABS(long long x) { return (x < 0 ? -x : x); }
inline bool cmp1(const T &t, const T &t1) {
  return ABS(t.x * (t1.v + w)) < ABS(t1.x * (t.v + w));
}
inline bool cmp(const T &t, const T &t1) {
  return ((ABS(t.x * (t1.v - w)) < ABS(t1.x * (t.v - w))) ||
          (t.x * (t1.v - w) == t1.x * (t.v - w) &&
           ABS(t.x * (t1.v + w)) > ABS(t1.x * (t.v + w))));
}
int main() {
  scanf("%d%lld", &n, &w);
  for (int i = 1; i <= n; i++) scanf("%lld%lld", &a[i].x, &a[i].v);
  sort(a + 1, a + n + 1, cmp);
  for (int len = 1; len < n; len <<= 1) {
    for (int l = 1; l < n; l += len * 2) {
      if (l + len - 1 >= n) continue;
      int r = min(l + len * 2 - 1, n), mid = l + len - 1;
      int x = l, y = mid + 1, tot = l;
      while (x <= mid || y <= r) {
        if (y > r || (x <= mid && cmp1(a[x], a[y])))
          b[tot++] = a[x++];
        else
          ans += mid - x + 1, b[tot++] = a[y++];
      }
      for (int j = l; j <= r; j++) a[j] = b[j];
    }
  }
  printf("%lld\n", ans);
  return 0;
}
