#include <bits/stdc++.h>
using namespace std;
const int N = 100007;
int n, w;
int x[N], v[N];
int pos[N];
struct Fenwick {
  int T[N];
  void add(int pos) {
    for (++pos; pos < N; pos += (pos & -pos)) {
      ++T[pos];
    }
  }
  int get(int pos) {
    int ret = 0;
    for (++pos; pos; pos -= (pos & -pos)) {
      ret += T[pos];
    }
    return ret;
  }
  int sum(int l, int r) { return get(r) - get(l - 1); }
} bit;
struct Fraction {
  int p, q;
  Fraction(int a = 0, int b = 1) {
    if (b < 0) {
      b = -b;
      a = -a;
    }
    p = a;
    q = b;
  }
  bool operator<(const Fraction &o) const {
    return (long long)p * o.q < (long long)o.p * q;
  }
};
struct Item {
  Fraction x, y;
  int id;
};
bool cmpx(const Item &a, const Item &b) {
  if (a.x < b.x) return true;
  if (b.x < a.x) return false;
  if (b.y < a.y) return true;
  if (a.y < b.y) return false;
  return a.id < b.id;
}
bool cmpy(const Item &a, const Item &b) {
  if (a.y < b.y) return true;
  if (b.y < a.y) return false;
  if (b.x < a.x) return true;
  if (a.x < b.x) return false;
  return a.id > b.id;
}
void solve() {
  scanf("%d%d", &n, &w);
  vector<Item> a(n);
  for (int i = 0; i < (int)(n); ++i) {
    scanf("%d%d", &x[i], &v[i]);
    a[i].id = i;
    a[i].x = Fraction(-x[i], v[i] - w);
    a[i].y = Fraction(-x[i], v[i] + w);
  }
  sort((a).begin(), (a).end(), cmpx);
  for (int i = 0; i < (int)(n); ++i) {
    pos[a[i].id] = i;
  }
  sort((a).begin(), (a).end(), cmpy);
  long long ans = 0;
  for (int i = 0; i < (int)(n); ++i) {
    int id = a[i].id;
    ans += bit.sum(pos[id], n - 1);
    bit.add(pos[id]);
  }
  cout << ans << endl;
}
int main(int argc, char *argv[]) {
  solve();
  return 0;
}
