#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
struct Poll {
  long long x;
  long long y;
};
bool cmp(Poll a, Poll b) {
  if (a.x == b.x)
    return (a.y > b.y);
  else
    return (a.x < b.x);
}
bool ccw(Poll a, Poll b, Poll c) {
  return ((a.x - b.x) * (c.y - b.y) - (c.x - b.x) * (a.y - b.y) >= 0);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  long long n;
  Poll polls[100000];
  cin >> n;
  for (long long i = 0; i < n; i++) {
    long long x, y;
    cin >> x >> y;
    polls[i] = {x, y - x * x};
  }
  sort(polls, polls + n, cmp);
  vector<Poll> convexhull;
  for (long long i = 0; i < n; i++) {
    while (convexhull.size() > 1 &&
           ccw(polls[i], convexhull[convexhull.size() - 1],
               convexhull[convexhull.size() - 2])) {
      convexhull.pop_back();
    }
    convexhull.push_back(polls[i]);
  }
  long long ans = convexhull.size() - 1;
  for (long long i = 1; i < convexhull.size(); i++) {
    if (convexhull[i].x == convexhull[i - 1].x) ans--;
  }
  cout << ans << '\n';
  return 0;
}
