#include <bits/stdc++.h>
inline long long int sqr(long long int x) { return x * x; }
inline long long int getZ(std::pair<long long int, long long int> A,
                          std::pair<long long int, long long int> B) {
  return (A.first * B.second - A.second * B.first);
}
bool rightTurn(std::pair<long long int, long long int> A,
               std::pair<long long int, long long int> B,
               std::pair<long long int, long long int> C) {
  C.first -= B.first;
  C.second -= B.second;
  B.first -= A.first;
  B.second -= A.second;
  return getZ(B, C) <= 0;
}
int N, K = 0;
std::pair<long long int, long long int> cnvx[100000];
std::pair<long long int, long long int> points[100000];
int main() {
  std::ios_base::sync_with_stdio(false);
  std::cin.tie(0);
  std::cout.tie(0);
  std::cin >> N;
  for (int i = 0; i < N; i++) {
    std::cin >> points[i].first >> points[i].second;
    points[i].second -= sqr(points[i].first);
  }
  std::sort(points, points + N);
  for (int i = N - 1; i >= 0; i--) {
    while (K > 1 && rightTurn(cnvx[K - 2], cnvx[K - 1], points[i])) K--;
    cnvx[K++] = points[i];
  }
  if (K > 1 && cnvx[K - 1].first == cnvx[K - 2].first) K--;
  std::cout << K - 1 << "\n";
  return 0;
}
