func_code_string: #include <bits/stdc++.h>   using namespace std;   inline int gi() {     int data = 0, fu = 1;     char ch = 0;     while (ch !=  -  && (ch <  0  || ch >  9 )) ch = getchar();     if (ch ==  - ) fu = -1, ch = getchar();     while ( 0  <= ch && ch <=  9 )       data = (data << 1) + (data << 3) + (ch ^ 48), ch = getchar();     return data * fu;   }   int n, nq, q[200005];   map<long long, long long> M;   struct Node {     long long x, y;   } p[200005];   const long double eps = 1e-8;   inline long double Slope(int i, int j) {     return (long double)(p[i].y - p[j].y) / (long double)(p[i].x - p[j].x);   }   inline bool cmp(Node a, Node b) { return a.x ^ b.x ? a.x < b.x : a.y < b.y; }   int main() {     n = gi();     for (long long i = 1, x, y; i <= n; ++i) {       x = gi(), y = gi();       y -= x * x;       if (M.find(x) == M.end()) M[x] = -1e18;       M[x] = max(M[x], y);     }     n = 0;     for (map<long long, long long>::iterator it = M.begin(); it != M.end();          it++) {       long long X = it->first, Y = it->second;       long long i;       p[i = ++n].x = X, p[i].y = Y;     }     sort(p + 1, p + n + 1, cmp);     nq = 0;     for (long long i = 1; i <= n; ++i) {       while (nq >= 2 &&              Slope(q[nq - 1], q[nq]) - eps <= Slope(q[nq - 1], i) + eps)         --nq;       q[++nq] = i;     }     cout << nq - 1 << endl;     return 0;   }   