func_code_string: #include <bits/stdc++.h>   using namespace std;   bool is_right(complex<long long> p1, complex<long long> p2,                 complex<long long> p3) {     return (conj(p2 - p1) * (p3 - p1)).imag() < 0;   }   const int N = 1e5 + 5;   vector<complex<long long> > U;   complex<long long> a[N];   int n;   void read_input() {     cin >> n;     for (int i = 0; i < n; i++) {       int x, y;       cin >> x >> y;       a[i] = complex<long long>(x, y - 1LL * x * x);     }   }   void solve() {     sort(a, a + n, [](complex<long long> a, complex<long long> b) {       return make_pair(a.real(), a.imag()) < make_pair(b.real(), b.imag());     });     for (int i = 0; i < n; U.push_back(a[i++]))       while (U.size() > 1 && !is_right(U[U.size() - 2], U.back(), a[i]))         U.pop_back();     cout << U.size() - (U.size() > 1 && U[0].real() == U[1].real()) - 1;   }   int main() {     ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);     read_input(), solve();     return 0;   }   