#include <bits/stdc++.h>
using namespace std;
const int M = 1e5 + 5;
int n;
struct node {
  long long x, y;
  bool operator<(const node &b) const {
    if (x != b.x) return x < b.x;
    return y < b.y;
  }
} A[M], S[M];
bool Fish(node &a, node &b, node &c) {
  return (c.y - a.y) * (b.x - c.x) <= (b.y - c.y) * (c.x - a.x);
}
int top;
void Solve() {
  sort(A + 1, A + n + 1);
  for (int i = 1; i <= n; i++) {
    if (i != n and A[i].x == A[i + 1].x) continue;
    while (top > 1 and Fish(S[top - 1], A[i], S[top])) top--;
    S[++top] = A[i];
  }
  printf("%d\n", top - 1);
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%lld%lld", &A[i].x, &A[i].y);
    A[i].y -= A[i].x * A[i].x;
  }
  Solve();
  return 0;
}
