#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const int mod = 1e9 + 7;
const int MX = 1e6 + 5;
struct lp {
  double x, y;
  bool operator<(const lp& b) const {
    if (x == b.x) return y < b.y;
    return x < b.x;
  }
} cw[MX], R[MX], op[5], ok;
double cross(lp a, lp b, lp c) {
  return ((b.x - a.x) * (c.y - a.y) - (c.x - a.x) * (b.y - a.y));
}
int convex(int n) {
  int tn = 0, k;
  sort(cw, cw + n);
  for (int i = 0; i < n; i++) {
    while (tn > 1 && cross(R[tn - 1], cw[i], R[tn - 2]) >= 0) tn--;
    R[tn++] = cw[i];
  }
  return tn;
}
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 0; i < n; ++i) {
    scanf("%lf%lf", &cw[i].x, &cw[i].y);
    cw[i].y = cw[i].y - cw[i].x * cw[i].x;
  }
  n = convex(n);
  double ans = 0;
  for (int i = 1; i < n; ++i)
    if (R[i - 1].x == R[i].x) n--;
  cout << n - 1 << endl;
  return 0;
}
