#include <bits/stdc++.h>
using namespace std;
struct node {
  long long x, y;
  node() {}
  node(int _x, long long _y) {
    x = _x;
    y = _y;
  }
} point[100000];
bool cmp(const node &a, const node &b) {
  return a.x == b.x ? a.y > b.y : a.x < b.x;
}
struct node2 {
  int n;
  long double tan;
  node2(int _n, long double _tan) {
    n = _n;
    tan = _tan;
  }
};
stack<node2> sta;
int cnt[100000];
int main() {
  int n, i, j;
  long long x, y;
  scanf("%d", &n);
  for (i = 0; i < n; i++) {
    scanf("%lld%lld", &x, &y);
    y -= x * x;
    point[i] = node(x, y);
  }
  sort(point, point + n, cmp);
  for (i = j = 1; i < n; i++)
    if (point[i].x != point[i - 1].x) point[j++] = point[i];
  n = j;
  sta.push(node2(0, 1e9));
  for (i = 1; i < n; i++) {
    while ((long double)(point[i].y - point[sta.top().n].y) /
               (point[i].x - point[sta.top().n].x) >=
           sta.top().tan)
      sta.pop();
    cnt[i] = cnt[sta.top().n] + 1;
    sta.push(node2(i, (long double)(point[i].y - point[sta.top().n].y) /
                          (point[i].x - point[sta.top().n].x)));
  }
  printf("%d\n", cnt[n - 1]);
  return 0;
}
