#include <bits/stdc++.h>
using namespace std;
const long double eps = 1e-11;
pair<long double, long double> A[100010];
int n, w, tr[100010], tp, tp2;
long long ans;
long double lsh[100010];
long double dcmp(long double x) {
  return fabs(x) <= eps ? 0 : (x > 0 ? 1 : -1);
}
void add(int x) {
  for (; x <= tp; x += x & -x) tr[x]++;
}
int qry(int x) {
  int ans = 0;
  for (; x; x -= x & -x) ans += tr[x];
  return ans;
}
int main() {
  scanf("%d%d", &n, &w);
  for (int i = 1, x, v; i <= n; ++i) {
    scanf("%d%d", &x, &v);
    A[i] =
        pair<long double, long double>(-(long double)x / (long double)(v - w),
                                       -(long double)x / (long double)(v + w));
    lsh[++tp] = A[i].second;
  }
  sort(A + 1, A + n + 1), sort(lsh + 1, lsh + tp + 1);
  for (int i = 1; i <= tp; ++i)
    if (!tp2 || dcmp(lsh[tp2] - lsh[i])) lsh[++tp2] = lsh[i];
  tp = tp2;
  for (int i = 1, j; i <= n; i = j) {
    for (j = i; j <= n && dcmp(A[i].first - A[j].first) == 0; j++)
      ans += qry((lower_bound(lsh + 1, lsh + tp + 1, A[j].second) - lsh) - 1);
    for (j = i; j <= n && dcmp(A[i].first - A[j].first) == 0; j++)
      add((lower_bound(lsh + 1, lsh + tp + 1, A[j].second) - lsh));
  }
  printf("%lld", 1ll * n * (n - 1) / 2 - ans);
}
