(I2
I144
I4
(dp0
Vsquares.%l
p1
(Vsquares.cpp
p2
S'# include <bits/stdc++.h>\r\nusing namespace std;\r\n# define fi cin\r\n# define fo cout\r\n# define x first\r\n# define y second\r\nstruct square\r\n{\r\n    pair < int , int > d[4];\r\n};\r\nsquare s[55];\r\nbitset < 555 > matr[555];\r\ndouble arie[555];\r\ndouble dist(int a,int b,int c,int d)\r\n{\r\n    return sqrt((a - c) * (a - c) + (b - d) * (b - d));\r\n}\r\ndouble heron(int a,int b,int c,int d,int e,int f)\r\n{\r\n    double xx = dist(a,b,c,d);\r\n    double yy = dist(c,d,e,f);\r\n    double zz = dist(e,f,a,b);\r\n    double p = (xx + yy + zz) / 2.0;\r\n    return sqrt(p * (p - xx) * (p - yy) * (p - zz));\r\n}\r\nbool ook(int i,int k,int l)\r\n{\r\n    double na = 0;\r\n    for (int cnt = 0;cnt < 4;++cnt)\r\n        na += heron(s[i].d[cnt].x - 200,s[i].d[cnt].y - 200,s[i].d[(cnt+1)%4].x - 200,s[i].d[(cnt+1)%4].y - 200,k - 200,l - 200);\r\n    if (abs(na - arie[i]) < 1e-4) return 1;\r\n    return 0;\r\n}\r\nint main(void)\r\n{\r\n    //ifstream fi("square.in");\r\n    int n;\r\n    fi>>n;\r\n    bool ok = 1;\r\n    for (int i = 1;i <= n;++i)\r\n    {\r\n        int a,b,c,d;\r\n        fi>>a>>b>>c>>d;\r\n        int dx = a - c;\r\n        int dy = b - d;\r\n        int N = -1;\r\n        for (int k = 0;k < 4;++k)\r\n                {\r\n                    arie[i] += heron(a,b,c,d,c + dx - dy,d + dx + dy);\r\n                    c += dx - dy;\r\n                    d += dx + dy;\r\n                    s[i].d[k] = {c + 200,d + 200};\r\n                    dx = a - c;\r\n                    dy = b - d;\r\n                }\r\n        for (int k = 0;k < 4;++k)\r\n            ok &= s[i].d[k].x == s[i].d[(k+1)%4].x || s[i].d[k].y == s[i].d[(k+1)%4].y;\r\n    }\r\n    if (ok)\r\n    {\r\n        for (int i = 1;i <= n;++i)\r\n        {\r\n            int cntx = -1e9,cnty = -1e9;\r\n            int cx = 1e9,cy = 1e9;\r\n            for (int k = 0;k < 4;++k)\r\n                cntx = max(cntx,s[i].d[k].x),cx = min(cx,s[i].d[k].x),cnty = max(cnty,s[i].d[k].y),cy = min(cy,s[i].d[k].y);\r\n            assert(cx > 0 && cy > 0);\r\n            for (int k = cx;k < cntx;++k)\r\n                for (int l = cy;l < cnty;++l)\r\n                    matr[k][l] = 1;\r\n        }\r\n        int ans = 0;\r\n        for (int i = 0;i <= 500;++i)\r\n            for (int j = 0;j <= 500;++j)\r\n                ans += matr[i][j];\r\n        return fo << ans << \'\\n\',0;\r\n    }\r\n    else\r\n    {\r\n        for (int i = 1;i <= n;++i)\r\n        {\r\n            int fff = 0;\r\n            for (int k = 0;k <= 500;++k)\r\n                for (int l = 0;l <= 500;++l)\r\n                    if (ook(i,k,l) && (ook(i,k+1,l) || ook(i,k,l+1)))\r\n                        matr[k][l] = 1;\r\n        }\r\n        int rest = 0,ans = 0;;\r\n        for (int k = 0;k <= 500;++k)\r\n            for (int l = 0;l <= 500;++l)\r\n                rest += matr[k][l] && matr[k+1][l] && matr[k][l+1] && !matr[k+1][l+1],ans += matr[k][l];\r\n        fo << (ans + rest/2) << \'\\n\';\r\n    }\r\n    return 0;\r\n}\r\n'
p3
tp4
stp5
.