#include <bits/stdc++.h>
using namespace std;
const long long N = 1E5 + 5;
struct Point {
  long long x, y, w;
  double l, r;
} a[N];
long long n, Ans = 0, num[N], cnt[N];
double w;
bool cmp1(Point a, Point b) { return a.l < b.l; }
bool cmp2(Point a, Point b) { return a.r < b.r; }
long long find(long long x) {
  long long ret = 0;
  while (x) {
    ret += cnt[x];
    x -= (x & (-x));
  }
  return ret;
}
long long Get(long long l, long long r) { return find(r) - find(l - 1); }
void change(long long x, long long v) {
  while (x <= n) {
    cnt[x] += v;
    x += (x & (-x));
  }
}
int main() {
  scanf("%I64d%lf", &n, &w);
  w += 0.000005;
  for (long long i = 1; i <= n; i++) {
    scanf("%I64d", &a[i].x);
    scanf("%I64d", &a[i].y);
    a[i].w = i;
    a[i].l = double(a[i].x) / double(a[i].y - w);
    a[i].r = double(a[i].x) / double(a[i].y + w);
  }
  sort(a + 1, a + n + 1, cmp1);
  for (long long i = 1; i <= n; i++) {
    num[a[i].w] = i;
  }
  sort(a + 1, a + n + 1, cmp2);
  for (long long i = 1; i <= n; i++) {
    Ans += Get(num[a[i].w] + 1, n);
    change(num[a[i].w], 1);
  }
  printf("%I64d\n", Ans);
  return 0;
}
