#include <bits/stdc++.h>
using namespace std;
const int maxN = 1e5 + 1;
const long double eps = 1e-12;
int n;
long double w, a[maxN], b[maxN];
int rankb[maxN], id[maxN];
int bit[maxN];
inline long double Abs(long double x) { return x >= 0 ? x : -x; }
void Enter() {
  cin >> n >> w;
  for (int i = 1; i <= n; ++i) {
    long double x, v;
    cin >> x >> v;
    if (x < 0) {
      a[i] = (Abs(v) - w) / Abs(x);
      b[i] = (Abs(v) + w) / Abs(x);
    } else {
      a[i] = (Abs(v) + w) / Abs(x);
      b[i] = (Abs(v) - w) / Abs(x);
    }
  }
}
void Init() {
  for (int i = 1; i <= n; ++i) id[i] = i;
  sort(id + 1, id + n + 1, [](int i, int j) { return b[i] < b[j]; });
  rankb[id[1]] = 1;
  for (int i = 2; i <= n; ++i)
    if (Abs(b[id[i]] - b[id[i - 1]]) < eps)
      rankb[id[i]] = rankb[id[i - 1]];
    else
      rankb[id[i]] = rankb[id[i - 1]] + 1;
  sort(id + 1, id + n + 1, [](int i, int j) {
    return a[i] < a[j] || (a[i] == a[j] && b[i] > b[j]);
  });
  fill(bit + 1, bit + n + 1, 0);
}
inline void Increase(int x) {
  for (; x <= n; x += x & -x) ++bit[x];
}
inline int Query(int x) {
  int res = 0;
  for (; x > 0; x &= x - 1) res += bit[x];
  return res;
}
void Solve() {
  long long res = 0;
  for (int i = 1; i <= n; ++i) {
    int j = id[i];
    res += (i - 1) - Query(rankb[j] - 1);
    Increase(rankb[j]);
  }
  cout << res;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  Enter();
  Init();
  Solve();
}
