#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 5;
struct Point {
  double x, y;
} data[maxn];
bool cmp(Point &a, Point &b) {
  if (a.x == b.x) return a.y > b.y;
  return a.x > b.x;
}
bool ccw(Point &a, Point &b, Point &c) {
  return (b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x) < 0;
}
int main() {
  cin.sync_with_stdio(0);
  cin.tie(0);
  int n;
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> data[i].x >> data[i].y;
    data[i].y = data[i].y - data[i].x * data[i].x;
  }
  sort(data + 1, data + n + 1, cmp);
  vector<Point> res(data + 1, data + 2);
  for (int i = 2; i <= n; i++) {
    if (data[i].x == res.back().x) continue;
    for (int j = res.size() - 2; j >= 0 && !ccw(res[j + 1], res[j], data[i]);
         j--) {
      res.pop_back();
    }
    res.push_back(data[i]);
  }
  cout << res.size() - 1 << endl;
}
