#include <bits/stdc++.h>
using namespace std;
struct frac {
  long long int n1, d1, n2, d2;
};
frac t[200005], w[200005];
pair<int, int> v[200005];
bool compare(frac a, frac b) { return a.n2 * b.d2 <= b.n2 * a.d2; }
bool cmp(frac a, frac b) {
  if (a.n1 * b.d1 == b.n1 * a.d1) return a.n2 * b.d2 > b.n2 * a.d2;
  return a.n1 * b.d1 < b.n1 * a.d1;
}
long long int getinv(int l, int r) {
  if (l == r) return 0;
  int m = (l + r) / 2, i = l, j = (l + r) / 2 + 1, k = 0;
  long long int ans = getinv(l, m);
  ans += getinv(m + 1, r);
  while (i <= m && j <= r) {
    if (compare(t[j], t[i])) {
      w[k++] = t[j++];
      ans += m - i + 1;
    } else if (compare(t[i], t[j])) {
      w[k++] = t[i++];
    } else {
      w[k++] = t[i++];
    }
  }
  while (i <= m) {
    w[k++] = t[i++];
  }
  while (j <= r) {
    w[k++] = t[j++];
  }
  for (i = l; i <= r; i++) t[i] = w[i - l];
  return ans;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int n, i, w;
  cin >> n >> w;
  for (i = 0; i < n; i++) {
    cin >> v[i].first >> v[i].second;
    t[i].n1 = abs(v[i].first);
    t[i].d1 = abs(v[i].second + w);
    t[i].n2 = abs(v[i].first);
    t[i].d2 = abs(v[i].second - w);
  }
  sort(t, t + n, cmp);
  cout << getinv(0, n - 1) << '\n';
  return 0;
}
