#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using Pii = pair<int, int>;
using Vi = vector<int>;
void run();
int main() {
  cin.sync_with_stdio(0);
  cin.tie(0);
  cout << fixed << setprecision(18);
  run();
  return 0;
}
int uplg(int n) { return 32 - __builtin_clz(n); }
int uplg(ll n) { return 64 - __builtin_clzll(n); }
using Point = pair<ll, ll>;
Point operator-(Point a, Point b) {
  return {a.first - b.first, a.second - b.second};
}
ll cross(Point a, Point b) { return a.first * b.second - a.second * b.first; }
void run() {
  int n;
  cin >> n;
  vector<Point> elems(n);
  for (auto& e : (elems)) {
    cin >> e.first >> e.second;
    e.second -= e.first * e.first;
  }
  sort((elems).begin(), (elems).end());
  int k = 0;
  for (int j = (1); j < (n); j++) {
    if (elems[k].first != elems[j].first) k++;
    elems[k] = elems[j];
  }
  vector<Point> hull;
  elems.resize(k + 1);
  for (auto& e : (elems)) {
    while (int((hull).size()) >= 2) {
      Point a = hull.rbegin()[1], b = hull.back();
      if (cross(b - a, e - b) < 0) break;
      hull.pop_back();
    }
    hull.push_back(e);
  }
  cout << int((hull).size()) - 1 << '\n';
}
