#include <bits/stdc++.h>
using namespace std;
struct node {
  long long a, b, id;
  double p, q;
} c[800005];
bool cmp1(node x, node y) { return x.p < y.p; }
bool cmp2(node x, node y) { return x.q < y.q; }
long long n, m, x, y, ans;
long long f[800005];
double w;
long long low(long long x) { return x & (-x); }
void change(long long x, long long k) {
  while (x < 800005) f[x] += k, x += low(x);
}
long long find(long long x) {
  long long s = 0;
  while (x) s += f[x], x -= low(x);
  return s;
}
int main() {
  scanf("%I64d %I64d", &n, &m);
  w = m + 5 * 1e-6;
  for (int i = 1; i <= n; i++) {
    scanf("%I64d %I64d", &x, &y);
    c[i].p = x * 1.0 / (y - w) * 1.0, c[i].q = x * 1.0 / (y + w) * 1.0;
  }
  sort(c + 1, c + n + 1, cmp1);
  for (int i = 1; i <= n; i++) c[i].id = i;
  sort(c + 1, c + n + 1, cmp2);
  for (int i = 1; i <= n; i++) {
    ans += i - 1 - find(c[i].id);
    change(c[i].id, 1);
  }
  printf("%I64d\n", ans);
  return 0;
}
