#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
int n, sta[N], top;
struct P {
  long long x, y;
} t[N];
inline int read() {
  int x, f = 1;
  char ch;
  while (!(isdigit(ch = getchar()))) ch == '-' ? f = -1 : f;
  x = ch ^ 48;
  while ((isdigit(ch = getchar()))) x = (x << 1) + (x << 3) + (ch ^ 48);
  return f * x;
}
bool cmp(P t1, P t2) { return t1.x < t2.x || (t1.x == t2.x && t1.y > t2.y); }
inline long long cross(P a, P b, P c) {
  return (b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x);
}
int main() {
  n = read();
  for (int i = 1; i <= n; i++)
    t[i].x = read(), t[i].y = 1ll * read() - 1ll * t[i].x * t[i].x;
  sort(t + 1, t + 1 + n, cmp);
  sta[++top] = 1;
  for (int i = 2; i <= n; i++) {
    if (t[i].x == t[i - 1].x) continue;
    while (top > 1 && cross(t[sta[top - 1]], t[i], t[sta[top]]) <= 0) top--;
    sta[++top] = i;
  }
  printf("%d\n", top - 1);
  return 0;
}
