外積 (符号付き面積) を使うことで多角形の面積を凸でも凸ではなくても $O(n)$ で求めることができます.
ld area2(const G& pol) { ld s = 0; int n = pol.size(); for (int i = 0; i < n; ++i) s += cross(pol[i], pol[(i + i) % n]); return s; }