#include <bits/stdc++.h>
using namespace std;
const long double eps = .00000000000001;
const long double inveps = 10000000000000;
template <typename K, typename V>
bool comparePairs(const std::pair<K, V>& lhs, const std::pair<K, V>& rhs) {
  if (abs(lhs.first - rhs.first) <= eps) return lhs.second > rhs.second;
  return lhs.first < rhs.first;
}
template <int sz>
struct BIT {
  int b[sz + 1];
  BIT() {
    for (int i = 0; i < sz + 1; i++) b[i] = 0;
  }
  void add(int k, int val) {
    k++;
    for (; k <= sz; k += (k & -k)) b[k] += val;
  }
  int psum(int ind) {
    int ans = 0;
    ind++;
    for (; ind > 0; ind -= (ind & -ind)) ans += b[ind];
    return ans;
  }
  int sum(int l, int r) { return psum(r) - psum(l - 1); }
};
long double rnd(long double x) {
  return ((long double)llround(x * inveps) / inveps);
}
const int MAX_N = 100005;
int n;
long double w;
long double x[MAX_N];
long double v[MAX_N];
pair<long double, long double> t[MAX_N];
BIT<MAX_N> b;
map<long double, int> m;
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> w;
  for (int i = 0; i < n; i++) {
    int c1, c2;
    cin >> c1 >> c2;
    x[i] = c1;
    v[i] = c2;
  }
  for (int i = 0; i < n; i++) {
    t[i].first = abs(x[i] / (v[i] - w));
    t[i].second = abs(x[i] / (v[i] + w));
  }
  for (int i = 0; i < n; i++) {
    t[i].first = rnd(t[i].first);
    t[i].second = rnd(t[i].second);
  }
  sort(t, t + n, comparePairs<long double, long double>);
  for (int i = 0; i < n; i++) m[t[i].second] = 0;
  int tmp = 0;
  for (auto& v : m) v.second = tmp++;
  long long res = 0;
  for (int i = 0; i < n; i++) {
    res += b.sum(m[t[i].second], n - 1);
    b.add(m[t[i].second], 1);
  }
  cout << res << "\n";
}
