#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; double LIMIT; struct ellipse { double cx, cy, rx, ry; void read() { cin >> cx >> cy >> rx >> ry; } bool isInside(double x, double y) { double v1 = (x - cx) * ry; double v2 = (y - cy) * rx; double v3 = rx * ry; return v1 * v1 + v2 * v2 <= v3 * v3; } } e[3]; int isInAnEllipse(double x, double y, double len) { double pts[4][2] = { { x, y }, { x, y + len }, { x + len, y }, { x + len, y + len } }; bool any = false; for(int i = 0; i < 3; i++) { bool ok = true; for(int j = 0; j < 4; j++) { ok &= e[i].isInside(pts[j][0], pts[j][1]); any |= e[i].isInside(pts[j][0], pts[j][1]); } if(ok) return 1; } if(!any) return -1; return 0; } double go(double x, double y, double len) { if(len < LIMIT) return 0.0; int aux = isInAnEllipse(x, y, len); if(aux == 1) return len * len; if(aux == -1) return 0.0; double pts[4][2] = { { x, y }, { x, y + len / 2 }, { x + len / 2, y }, { x + len / 2, y + len / 2 } }; double ret = 0.0; for(int i = 0; i < 4; i++) ret += go(pts[i][0], pts[i][1], len / 2); return ret; } int main() { // freopen("date.in", "r", stdin); // freopen("date.out","w", stdout); for(int i = 0; i < 3; i++) e[i].read(); LIMIT = 1e-4; double ans = 0; for(int i = -50; i <= 50; i++) for(int j = -50; j <= 50; j++) ans += go(i, j, 1.0); cout << ans << endl; return 0; }