#include <bits/stdc++.h>
using namespace std;
struct point {
  long long x;
  long long y;
  void print() { cout << x << " " << y << endl; }
};
bool operator<(point a, point b) {
  if (a.x == b.x)
    return a.y < b.y;
  else
    return a.x < b.x;
}
long long cross_prod_det(point a, point b, point c) {
  return (c.x - b.x) * (a.y - b.y) - (a.x - b.x) * (c.y - b.y);
}
void convex_hull(vector<point> &points, vector<point> &hull) {
  for (int i = 0; i < points.size(); i++) {
    if (i < points.size() - 1 && points[i].x == points[i + 1].x) continue;
    int l = hull.size() - 1;
    while (hull.size() > 1 &&
           cross_prod_det(hull[l - 1], hull[l], points[i]) >= 0) {
      hull.pop_back();
      l--;
    }
    hull.push_back(points[i]);
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  int n;
  cin >> n;
  vector<point> P(n);
  for (int i = 0; i < n; i++) cin >> P[i].x >> P[i].y;
  for_each(P.begin(), P.end(), [](point &p) { p.y = p.y - p.x * p.x; });
  sort(P.begin(), P.end());
  vector<point> hull;
  convex_hull(P, hull);
  cout << hull.size() - 1 << endl;
  return 0;
}
