#include <bits/stdc++.h>
using namespace std;
const int oo = 0x3f3f3f3f;
const long long ooo = 9223372036854775807ll;
const int _cnt = 1000 * 1000 + 7;
const int _p = 1000 * 1000 * 1000 + 7;
const int N = 100005;
const double PI = acos(-1.0);
const double eps = 1e-9;
int o(int x) { return x % _p; }
int gcd(int a, int b) { return b ? gcd(b, a % b) : a; }
int lcm(int a, int b) { return a / gcd(a, b) * b; }
void file_put() {
  freopen("filename.in", "r", stdin);
  freopen("filename.out", "w", stdout);
}
struct BIT {
  long long c[N];
  int n;
  void Init(int _n) {
    memset(c, 0, sizeof(c));
    n = _n;
  }
  long long Q(int k) {
    long long ans = 0;
    for (; k; k -= (k & (-k))) ans += c[k];
    return ans;
  }
  void U(int k, long long x) {
    for (; k <= n; k += (k & (-k))) c[k] += x;
  }
};
struct ttype {
  int x, y;
} D[N];
BIT T;
long long ans = 0;
int n, w, x, v, mX = 0, mY = 0;
double a[N], b[N];
map<double, int> X, Y;
bool cmp(const ttype &a, const ttype &b) {
  return a.x < b.x || a.x == b.x && a.y > b.y;
}
int main() {
  scanf("%d%d", &n, &w);
  T.Init(n);
  for (int i = (1); i <= (n); ++i) {
    scanf("%d%d", &x, &v);
    a[i] = (double)(v - w) / x, b[i] = (double)(v + w) / x;
    X[a[i]]++, Y[b[i]]++;
  }
  for (__typeof((X).begin()) it = (X).begin(); it != (X).end(); it++)
    it->second = ++mX;
  for (__typeof((Y).begin()) it = (Y).begin(); it != (Y).end(); it++)
    it->second = ++mY;
  for (int i = (1); i <= (n); ++i) D[i] = ttype{X[a[i]], Y[b[i]]};
  sort(D + 1, D + n + 1, cmp);
  for (int i = (1); i <= (n); ++i)
    ans += T.Q(n) - T.Q(D[i].y - 1), T.U(D[i].y, 1);
  printf("%I64d\n", ans);
  return 0;
}
