#include <bits/stdc++.h>
using namespace std;
inline long long read() {
  long long x = 0, f = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = (x << 1) + (x << 3) + (ch ^ 48);
    ch = getchar();
  }
  return x * f;
}
const int N = 2e5 + 7;
struct Poi {
  long long x, y;
  inline bool operator<(const Poi &tmp) const {
    return x != tmp.x ? x < tmp.x : y < tmp.y;
  }
} p[N];
inline bool fc(Poi A, Poi B, Poi C) {
  return (B.y - A.y) * (C.x - A.x) >= (C.y - A.y) * (B.x - A.x);
}
int n, ans;
int st[N], Top;
int main() {
  n = read();
  for (int i = 1; i <= n; i++) {
    p[i].x = read();
    p[i].y = read();
    p[i].y -= p[i].x * p[i].x;
  }
  sort(p + 1, p + n + 1);
  st[Top = 1] = n;
  for (int i = n - 1; i; i--) {
    while (Top > 1 && fc(p[st[Top - 1]], p[st[Top]], p[i])) Top--;
    st[++Top] = i;
  }
  for (int i = 1; i <= Top; i++)
    if (i == 1 || p[st[i]].x != p[st[i - 1]].x) ans++;
  printf("%d", ans - 1);
  return 0;
}
