#include <bits/stdc++.h>
using namespace std;
int n;
vector<pair<long long, long long> > v, ch;
long long Cross_Product(pair<long long, long long> a,
                        pair<long long, long long> b,
                        pair<long long, long long> c) {
  return ((long long)b.first - a.first) * ((long long)c.second - a.second) -
         ((long long)c.first - a.first) * ((long long)b.second - a.second);
}
long long dis(pair<long long, long long> a, pair<long long, long long> b) {
  return ((long long)b.first - a.first) * (b.first - a.first) +
         ((long long)b.second - a.second) * (b.second - a.second);
}
bool cmp(pair<long long, long long> a, pair<long long, long long> b) {
  return a.first == b.first ? a.second < b.second : a.first > b.first;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  cout.tie(nullptr);
  cin >> n;
  for (int i = 0; i < n; i++) {
    long long x, y;
    cin >> x >> y;
    y -= x * x;
    v.emplace_back(make_pair(x, y));
  }
  sort(v.begin(), v.end(), cmp);
  vector<pair<long long, long long> > p;
  for (int i = 0; i < (int)v.size(); i++) {
    if (i == (int)v.size() - 1 || v[i].first != v[i + 1].first)
      p.emplace_back(v[i]);
  }
  for (int i = 0; i < (int)p.size(); i++) {
    while ((int)ch.size() >= 2 &&
           Cross_Product(ch[(int)ch.size() - 2], ch[(int)ch.size() - 1],
                         p[i]) <= 0)
      ch.pop_back();
    ch.emplace_back(p[i]);
  }
  cout << ch.size() - 1 << endl;
  return 0;
}
