#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
struct data {
  long long x, y;
} a[N];
int q[N];
bool cmp(data xx, data yy) {
  if (xx.x != yy.x)
    return xx.x < yy.x;
  else
    return xx.y > yy.y;
}
int cross(int A, int B, int C) {
  data pp = (data){a[B].x - a[C].x, a[B].y - a[C].y};
  data qq = (data){a[A].x - a[C].x, a[A].y - a[C].y};
  long long pos = qq.x * pp.y - qq.y * pp.x;
  if (pos <= 0)
    return true;
  else
    return false;
}
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) {
    long long x, y;
    scanf("%lld%lld", &x, &y);
    a[i].x = x, a[i].y = y - x * x;
  }
  sort(a + 1, a + 1 + n, cmp);
  int head = 1, tail = 1;
  q[tail] = 1;
  for (int i = 2; i <= n; ++i) {
    if (a[i].x == a[i - 1].x) continue;
    while (head + 1 <= tail && cross(q[tail], q[tail - 1], i)) tail--;
    q[++tail] = i;
  }
  printf("%d\n", tail - head);
  return 0;
}
