#include <bits/stdc++.h>
struct Fraction;
int n, w, cnt;
long long ans;
std::set<Fraction> allFraction;
struct Fraction {
  long long num, deno;
  Fraction() {}
  Fraction(int _num, int _deno) : num(_num), deno(_deno) {
    simplify();
    allFraction.insert(*this);
  }
  long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }
  void simplify() {
    if (deno < 0) {
      deno *= -1;
      num *= -1;
    }
    long long g = gcd(abs(num), deno);
    num /= g;
    deno /= g;
  }
  bool operator<(const Fraction& other) const {
    return num * other.deno < deno * other.num;
  }
  bool operator==(const Fraction& other) const {
    return num * other.deno == deno * other.num;
  }
};
std::pair<Fraction, Fraction> plane[100100];
std::map<Fraction, int> mapFraction;
struct FenTree {
  int c[200100];
  inline int lowbit(int x) { return x & (-x); }
  void add(int x, int add) {
    for (int i = x; i <= 200100; i += lowbit(i)) c[i] += add;
  }
  int sum(int x) {
    int RV = 0;
    for (int i = x; i > 0; i -= lowbit(i)) RV += c[i];
    return RV;
  }
  int getSum(int x, int y) { return sum(y) - sum(x - 1); }
  FenTree() { memset(c, 0, sizeof(c)); }
} tree;
template <typename T>
inline void nextInt(T& x) {
  x = 0;
  char c = getchar();
  int sign = 1;
  for (; (c < '0') || (c > '9'); c = getchar())
    if (c == '-') sign = -1;
  for (; (c >= '0') && (c <= '9'); c = getchar()) x = x * 10 + (c - '0');
  x *= sign;
}
bool cmp(const std::pair<Fraction, Fraction> a,
         const std::pair<Fraction, Fraction> b) {
  return a.first < b.first || a.first == b.first && b.second < a.second;
}
int main() {
  nextInt(n);
  nextInt(w);
  for (int i = 1; i <= n; i++) {
    int x, v;
    nextInt(x);
    nextInt(v);
    plane[i] = {Fraction(-x, v - w), Fraction(-x, v + w)};
  }
  sort(plane + 1, plane + n + 1, cmp);
  std::set<Fraction>::iterator it;
  for (it = allFraction.begin(); it != allFraction.end(); it++)
    mapFraction[*it] = ++cnt;
  for (int i = 1; i <= n; i++) {
    ans += tree.getSum(mapFraction[plane[i].second], cnt);
    tree.add(mapFraction[plane[i].second], 1);
  }
  printf("%I64d\n", ans);
  return 0;
}
