#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100005;
int n;
pair<long long, long long> p[MAXN];
bool check(pair<long long, long long> a, pair<long long, long long> b,
           pair<long long, long long> c) {
  b = make_pair(b.first - a.first, b.second - a.second);
  c = make_pair(c.first - a.first, c.second - a.second);
  if (b.first * c.second - b.second * c.first >= 0)
    return false;
  else
    return true;
}
bool linear(pair<long long, long long> a, pair<long long, long long> b,
            pair<long long, long long> c) {
  b = make_pair(b.first - a.first, b.second - a.second);
  c = make_pair(c.first - a.first, c.second - a.second);
  if (b.first * c.second - b.second * c.first == 0)
    return true;
  else
    return false;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%I64d %I64d", &p[i].first, &p[i].second);
    p[i].second -= p[i].first * p[i].first;
  }
  sort(p, p + n);
  vector<pair<long long, long long> > p_;
  for (int i = 0; i < n; i++) {
    if (i == n - 1)
      p_.push_back(p[i]);
    else if (p[i].first != p[i + 1].first)
      p_.push_back(p[i]);
  }
  vector<pair<long long, long long> > env;
  for (int i = 0; i < p_.size(); i++) {
    while (env.size() >= 2) {
      if (check(env[env.size() - 2], env[env.size() - 1], p_[i]))
        break;
      else
        env.pop_back();
    }
    env.push_back(p_[i]);
  }
  long long res = 0;
  for (int i = 0; i + 1 < env.size();) {
    int j = i + 1;
    while (j + 1 < env.size()) {
      if (linear(env[i], env[i + 1], env[j + 1])) {
        j++;
      } else
        break;
    }
    res++;
    i = j;
  }
  printf("%I64d\n", res);
  return 0;
}
