#include <bits/stdc++.h>
using namespace std;
long long cross(pair<long long, long long> a, pair<long long, long long> b,
                pair<long long, long long> c) {
  c.first -= a.first;
  c.second -= a.second;
  b.first -= a.first;
  b.second -= a.second;
  return b.first * c.second - b.second * c.first;
}
bool ccw(pair<long long, long long> a, pair<long long, long long> b,
         pair<long long, long long> c) {
  return cross(a, b, c) > 0;
}
long long jar(pair<long long, long long> a, pair<long long, long long> b) {
  return sqrt((b.first - a.first) * (b.first - a.first) +
              (b.second - a.second) * (b.second - a.second));
}
pair<long long, long long> p0;
bool custom(pair<long long, long long> a, pair<long long, long long> b) {
  if (cross(p0, a, b) == 0)
    return jar(p0, a) < jar(p0, b);
  else
    return (ccw(p0, a, b));
}
vector<pair<long long, long long> > convex_hull(
    vector<pair<long long, long long> > points) {
  p0 = {2e9, 2e9};
  for (auto i : points) min(p0, i);
  sort(points.begin(), points.end(), greater<pair<long long, long long> >());
  vector<pair<long long, long long> > hull;
  hull.push_back(points[0]);
  hull.push_back(points[1]);
  for (int i = 2; i < points.size(); i++) {
    while (hull.size() >= 2 &&
           !ccw(hull[hull.size() - 2], hull.back(), points[i]))
      hull.pop_back();
    hull.push_back(points[i]);
  }
  return hull;
}
vector<pair<long long, long long> > polygon;
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    long long first, second;
    scanf("%lld %lld", &first, &second);
    second -= first * first;
    polygon.push_back({first, second});
  }
  if (n == 1) {
    printf("0\n");
    return 0;
  } else if (n == 2) {
    printf("1\n");
    return 0;
  }
  polygon = convex_hull(polygon);
  while (polygon.size() >= 2) {
    pair<long long, long long> p1 = polygon.back();
    pair<long long, long long> p2 = polygon[polygon.size() - 2];
    if (p1.first == p2.first)
      polygon.pop_back();
    else
      break;
  }
  printf("%lu\n", polygon.size() - 1);
}
