#include <bits/stdc++.h>
using namespace std;
long long int crossproduct(long long int x1, long long int y1, long long int x2,
                           long long int y2) {
  return x1 * y2 - y1 * x2;
}
bool above(pair<long long int, long long int> p1,
           pair<long long int, long long int> p2,
           pair<long long int, long long int> p3) {
  return crossproduct(p2.first - p1.first, p2.second - p1.second,
                      p2.first - p3.first, p2.second - p3.second) > 0;
}
int main() {
  long long int n, x, y;
  cin >> n;
  vector<pair<long long int, long long int>> pts;
  for (int i = 0; i < n; ++i) {
    cin >> x >> y;
    pts.push_back(make_pair(x, y - x * x));
  }
  sort(pts.begin(), pts.end());
  vector<int> convex;
  for (int i = 0; i < n; ++i) {
    convex.push_back(i);
    while (convex.size() > 2) {
      if (!above(pts[convex[convex.size() - 3]], pts[convex[convex.size() - 2]],
                 pts[convex[convex.size() - 1]])) {
        convex.erase(convex.begin() + (convex.size() - 2));
      } else
        break;
    }
  }
  int lines = convex.size();
  if (lines == 1) {
    cout << "0\n";
    return 0;
  }
  if (lines == 2) {
    cout << (pts[convex[0]].first == pts[convex[1]].first ? 0 : 1) << "\n";
    return 0;
  }
  cout << lines - 1 - (pts[convex[0]].first == pts[convex[1]].first ? 1 : 0) -
              (pts[convex[lines - 1]].first == pts[convex[lines - 2]].first ? 1
                                                                            : 0)
       << "\n";
  return 0;
}
