#include <bits/stdc++.h>
using namespace std;
bool is_right(complex<long long> p1, complex<long long> p2,
              complex<long long> p3) {
  return (conj(p2 - p1) * (p3 - p1)).imag() < 0;
}
const int N = 1e5 + 5;
vector<complex<long long> > U;
complex<long long> a[N];
int n;
void read_input() {
  cin >> n;
  for (int i = 0; i < n; i++) {
    int x, y;
    cin >> x >> y;
    a[i] = complex<long long>(x, y - 1LL * x * x);
  }
}
void solve() {
  sort(a, a + n, [](complex<long long> a, complex<long long> b) {
    return make_pair(a.real(), a.imag()) < make_pair(b.real(), b.imag());
  });
  for (int i = 0; i < n; U.push_back(a[i++]))
    while (U.size() > 1 && !is_right(U[U.size() - 2], U.back(), a[i]))
      U.pop_back();
  cout << U.size() - (U.size() > 1 && U[0].real() == U[1].real()) - 1;
}
int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  read_input(), solve();
  return 0;
}
