#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100005;
struct Point {
  long long x, y;
  Point() {}
  Point(long long _x, long long _y) : x(_x), y(_y) {}
  void print() { cerr << "{" << x << "," << y << "}" << endl; }
};
bool operator<(const Point &a, const Point &b) {
  return (a.x == b.x ? a.y > b.y : a.x < b.x);
}
Point operator+(const Point &a, const Point &b) {
  return Point(a.x + b.x, a.y + b.y);
}
Point operator-(const Point &a, const Point &b) {
  return Point(a.x - b.x, a.y - b.y);
}
long long det(const Point &a, const Point &b) { return a.x * b.y - b.x * a.y; }
vector<Point> p;
vector<int> st;
int n;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> n;
  p.resize(n);
  for (int i = 0; i < n; i++) {
    cin >> p[i].x >> p[i].y;
    p[i].y -= p[i].x * p[i].x;
  }
  sort(p.begin(), p.end());
  n = 1;
  for (int i = 1; i < p.size(); i++)
    if (p[i].x != p[i - 1].x) p[n++] = p[i];
  if (n == 1) {
    cout << 0 << endl;
    exit(0);
  }
  st.push_back(0), st.push_back(1);
  for (int i = 2; i < n; i++) {
    while (st.size() >= 2 &&
           det(p[i] - p[st[st.size() - 2]],
               p[st[st.size() - 1]] - p[st[st.size() - 2]]) <= 0)
      st.pop_back();
    st.push_back(i);
  }
  cout << st.size() - 1 << endl;
  return 0;
}
