#include <bits/stdc++.h>
using namespace std;
const int N = 1e5;
long long vecmul(pair<long long, long long> a, pair<long long, long long> b,
                 pair<long long, long long> o) {
  return (a.first - o.first) * (b.second - o.second) -
         (a.second - o.second) * (b.first - o.first);
}
struct cmp {
  pair<long long, long long> o;
  cmp(const pair<long long, long long>& o) : o(o) {}
  bool operator()(const pair<long long, long long>& a,
                  const pair<long long, long long>& b) {
    long long p = vecmul(a, b, o);
    return (p > 0 ||
            (p == 0 && abs(a.first - o.first) + abs(a.second - o.second) <
                           abs(b.first - o.first) + abs(b.second - o.second)));
  }
};
int n;
pair<long long, long long> a[N];
int main() {
  ios_base::sync_with_stdio(false);
  cout.tie(0);
  cin.tie(0);
  cin >> n;
  for (int i = 0; i < n; ++i) {
    cin >> a[i].first >> a[i].second;
    a[i].second -= a[i].first * a[i].first;
  }
  int j = 0, k = 0;
  for (int i = 1; i < n; ++i) {
    if (a[j].first > a[i].first ||
        (a[j].first == a[i].first && a[j].second < a[i].second))
      j = i;
    if (a[k].first < a[i].first ||
        (a[k].first == a[i].first && a[k].second < a[i].second))
      k = i;
  }
  pair<long long, long long> r = a[k];
  swap(a[0], a[j]);
  sort(a + 1, a + n, cmp(a[0]));
  vector<pair<long long, long long> > hull;
  hull.push_back(a[0]);
  hull.push_back(a[1]);
  for (int i = 2; i < n; ++i) {
    while (hull.size() >= 2 &&
           vecmul(a[i], hull.back(), hull[hull.size() - 2]) >= 0)
      hull.pop_back();
    hull.push_back(a[i]);
  }
  if (a[0] == r) {
    cout << "0\n";
    return 0;
  }
  int ans = 1;
  for (int i = 0; i < hull.size(); ++i) {
    if (vecmul(r, hull[i], hull[0]) > 0) ++ans;
  }
  cout << ans << '\n';
}
