#include <bits/stdc++.h>
using namespace std;
long long cross(pair<long long, long long> a, pair<long long, long long> b) {
  return 1LL * a.first * b.second - 1LL * a.second * b.first;
}
bool ccw(pair<long long, long long> a, pair<long long, long long> b,
         pair<long long, long long> c, bool w) {
  a = make_pair(a.first - b.first, a.second - b.second);
  c = make_pair(c.first - b.first, c.second - b.second);
  long long res = cross(a, c);
  if (w)
    return res >= 0;
  else
    return res <= 0;
}
void makehull(vector<pair<long long, long long>> a,
              vector<vector<pair<long long, long long>>>& hull) {
  sort(a.begin(), a.end());
  for (int r = 0; r < 2; r++) {
    hull[r].push_back(a[0]);
    for (int i = 1; i < a.size(); i++) {
      while (hull[r].size() >= 2 &&
             ccw(hull[r][hull[r].size() - 2], hull[r].back(), a[i], 0)) {
        hull[r].pop_back();
      }
      hull[r].push_back(a[i]);
    }
    reverse(a.begin(), a.end());
  }
  reverse(hull[1].begin(), hull[1].end());
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int n;
  cin >> n;
  vector<pair<long long, long long>> v;
  for (int i = 0; i < n; i++) {
    long long first, second;
    cin >> first >> second;
    second -= first * first;
    v.push_back(pair<long long, long long>(first, second));
  }
  sort(v.begin(), v.end());
  reverse(v.begin(), v.end());
  vector<pair<long long, long long>> pro;
  pro.push_back(v[0]);
  for (int i = 0; i < v.size() - 1; i++) {
    if (v[i].first != v[i + 1].first) {
      pro.push_back(v[i + 1]);
    }
  }
  vector<vector<pair<long long, long long>>> res(2);
  makehull(pro, res);
  cout << res[0].size() - 1 << endl;
}
