#include <bits/stdc++.h>
using namespace std;
const long long INF = 1e9 + 7;
const long long MAXN = 1e6 + 7;
const double EPS = 1e-8;
struct Tree {
  long long n;
  vector<long long> t;
  Tree(long long n) : n(n), t(2 * n, 0) {}
  long long get(long long l, long long r) {
    long long res = 0;
    for (l += n, r += n; l <= r; l /= 2, r /= 2) {
      if (l % 2) {
        res += t[l++];
      }
      if (r % 2 == 0) {
        res += t[r--];
      }
    }
    return res;
  }
  void add(long long v) {
    v += n;
    t[v]++;
    v /= 2;
    while (v) {
      t[v] = t[2 * v] + t[2 * v + 1];
      v /= 2;
    }
  }
};
bool cmp(const pair<pair<long long, long long>, long long> &a,
         const pair<pair<long long, long long>, long long> &b) {
  if (a.first.first * b.first.second == a.first.second * b.first.first) {
    return a.second < b.second;
  }
  if ((a.first.second < 0) ^ (b.first.second < 0)) {
    return a.first.first * b.first.second > a.first.second * b.first.first;
  }
  return a.first.first * b.first.second < a.first.second * b.first.first;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long n, w;
  cin >> n >> w;
  vector<pair<pair<long long, long long>, long long> > ax, ay;
  for (long long i = 0; i < n; i++) {
    long long xst, v;
    cin >> xst >> v;
    pair<long long, long long> xt = {xst, (v - w)};
    pair<long long, long long> yt = {xst, (v + w)};
    ax.push_back({xt, i});
    ay.push_back({yt, i});
  }
  sort(ax.begin(), ax.end(), cmp);
  sort(ay.begin(), ay.end(), cmp);
  vector<pair<long long, long long> > pos(n);
  long long lastx = 0, lasty = 0;
  for (long long i = 0; i < n; i++) {
    pos[ax[i].second].first = lastx;
    pos[ay[i].second].second = -lasty;
    if (i < n - 1 && ax[i + 1].first.first * ax[i].first.second !=
                         ax[i + 1].first.second * ax[i].first.first) {
      lastx++;
    }
    if (i < n - 1 && ay[i + 1].first.first * ay[i].first.second !=
                         ay[i + 1].first.second * ay[i].first.first) {
      lasty++;
    }
  }
  long long res = 0;
  Tree t(n);
  sort(pos.begin(), pos.end());
  for (long long i = 0; i < n; i++) {
    res += t.get(-pos[i].second, n - 1);
    t.add(-pos[i].second);
  }
  cout << res;
}
