#include <bits/stdc++.h>
using namespace std;
const int N = 100100;
int x[N], v[N], num[N * 2];
int n, w, len = 0;
pair<int, int> val[N * 2];
vector<int> p[N * 2];
int sz[N * 2];
void add(int id) {
  for (int i = id; i < N * 2; i += (i & (-i))) {
    sz[i]++;
  }
}
int get(int id) {
  int sum = 0;
  for (int i = id; i >= 1; i -= (i & (-i))) {
    sum += sz[i];
  }
  return sum;
}
int getId(pair<int, int> t) {
  int l = 0, r = len - 1, mid, ans;
  while (l <= r) {
    mid = (l + r) >> 1;
    if (1ll * t.first * val[mid].second <= 1ll * t.second * val[mid].first) {
      r = mid - 1;
      ans = mid;
    } else {
      l = mid + 1;
    }
  }
  return ans + 1;
}
int main() {
  scanf("%d%d", &n, &w);
  for (int i = 0; i < n; i++) {
    scanf("%d%d", &x[i], &v[i]);
    val[len++] = make_pair(abs(x[i]), abs(v[i]) + w);
    val[len++] = make_pair(abs(x[i]), abs(v[i]) - w);
  }
  sort(val, val + len, [](pair<int, int> &a, pair<int, int> &b) {
    return 1ll * a.first * b.second < 1ll * a.second * b.first;
  });
  for (int i = 0; i < n; i++) {
    int lid, rid;
    if (x[i] > 0) {
      lid = getId(make_pair(abs(x[i]), abs(v[i]) + w)),
      rid = getId(make_pair(abs(x[i]), abs(v[i]) - w));
    } else {
      rid = getId(make_pair(abs(x[i]), abs(v[i]) + w)),
      lid = getId(make_pair(abs(x[i]), abs(v[i]) - w));
    }
    p[lid].push_back(rid);
  }
  long long res = 0, all = 0;
  for (int i = 1; i <= len; i++) {
    for (auto r : p[i]) {
      res += all - get(r - 1);
      all++;
    }
    for (auto r : p[i]) {
      add(r);
    }
  }
  printf("%lld\n", res);
}
