(I2
I104
I4
(dp0
Vsquares.%l
p1
(Vsquares_2.cpp
p2
S'#include<iostream>\r\n#include<algorithm>\r\n#include<vector>\r\n#include<iomanip>\r\nusing namespace std;\r\nstruct st\r\n{\r\n    double x,y;\r\n};\r\nst pivot;\r\ndouble dist(st a)\r\n{\r\n    return (a.x-pivot.x)*(a.x-pivot.x)+(a.y-pivot.y)*(a.y-pivot.y);\r\n}\r\nint ccw(st a,st b,st c)\r\n{\r\n    double q=(b.x-a.x)*(c.y-a.y)-(b.y-a.y)*(c.x-a.x);\r\n    if(q>0)return -1;\r\n    if(q<0)return 1;\r\n    return 0;\r\n}\r\nbool polar_order(st a,st b)\r\n{\r\n    int q=ccw(pivot,a,b);\r\n    if(q==0)return dist(a)<dist(b);\r\n    return (q==-1);\r\n}\r\nbool asd(st a,st b)\r\n{\r\n    if(a.y==b.y)\r\n    if(a.x<b.x)\r\n    {\r\n        return true;\r\n    }\r\n    return false;\r\n}\r\nst c[32];\r\nst a[32][8];\r\nvector <st> v,p,fp;\r\nint used[1000000],n;\r\nvoid getpts()\r\n{\r\n    st t,t1,t2,t3;\r\n    int l=0,l2=0,l3=0;\r\n    int sz=p.size();\r\n    for(int i=0;i<sz;i++)\r\n    {\r\n        l=0;l2=0;l3=0; \r\n        t=p[i];\r\n        for(int j=1;j<=n;j++)\r\n        {\r\n            /*for(int k=1;k<=4;k++)\r\n            {\r\n                for(int kk=1;kk<=4;kk++)\r\n                {\r\n                    if(k!=kk)\r\n                    {\r\n                        t1=a[i][k];\r\n                        t2=a[i][kk];\r\n                        if(((t.x<t1.x&&t.x>t2.x)||(t.x>t1.x&&t.x<t2.x)))\r\n                    }\r\n                }\r\n            }*/\r\n            for(int k=1;k<=4;k++)\r\n            {\r\n                t1=a[j][k];\r\n                t2=a[j][k+1];\r\n                t3=p[i];\r\n                if(t3.x*(t1.y-t2.y)+t3.y*(t2.x-t1.x)+(t1.x*t2.y-t2.x*t1.y)>0)l++;\r\n            }\r\n            for(int k=1;k<=4;k++)\r\n            {\r\n                t1=a[j][k];\r\n                t2=a[j][k+1];\r\n                t3=p[i];\r\n                if(t3.x*(t1.y-t2.y)+t3.y*(t2.x-t1.x)+(t1.x*t2.y-t2.x*t1.y)<0)l2++;\r\n            }\r\n           // cout<<l<<" "<<l2<<endl;\r\n            if(l==4||l2==4){l3=1;break;}\r\n            l=0;\r\n            l2=0;\r\n        }\r\n        //cout<<l3<<endl;\r\n        if(l3==0)\r\n        {\r\n            fp.push_back(p[i]);\r\n        }l3=0;\r\n    }\r\n}\r\nint main()\r\n{\r\n    cin>>n;\r\n    st s;\r\n    for(int i=1;i<=n;i++)\r\n    {\r\n        cin>>c[i].x>>c[i].y>>a[i][1].x>>a[i][1].y;\r\n        //cout<<endl;\r\n        a[i][3].x=c[i].x+(c[i].x-a[i][1].x);\r\n        a[i][3].y=c[i].y+(c[i].y-a[i][1].y);\r\n        a[i][2].y=c[i].y+(c[i].x-a[i][1].x);\r\n        a[i][2].x=c[i].x-(c[i].y-a[i][1].y);\r\n        a[i][4].y=c[i].y-(c[i].x-a[i][1].x);\r\n        a[i][4].x=c[i].x+(c[i].y-a[i][1].y);\r\n        a[i][5]=a[i][1];\r\n        for(int j=1;j<=4;j++)v.push_back(a[i][j]);\r\n       /* for(int j=1;j<=4;j++)\r\n        {\r\n            cout<<a[i][j].x<<" "<<a[i][j].y<<endl;\r\n        }*/\r\n    }\r\n    double A1,B1,C1,A2,B2,C2,t,t1,t2,x,y;\r\n    for(int i=1;i<=n;i++)\r\n    {\r\n        for(int j=i+1;j<=n;j++)\r\n        {\r\n            for(int ii=1;ii<=4;ii++)\r\n            {\r\n                for(int jj=1;jj<=4;jj++)\r\n                {\r\n                    A1=a[i][ii].y-a[i][ii+1].y;\r\n                    B1=a[i][ii+1].x-a[i][ii].x;\r\n                    C1=a[i][ii].x*a[i][ii+1].y-a[i][ii+1].x*a[i][ii].y;\r\n                    A2=a[j][jj].y-a[j][jj+1].y;\r\n                    B2=a[j][jj+1].x-a[j][jj].x;\r\n                    C2=a[j][jj].x*a[j][jj+1].y-a[j][jj+1].x*a[j][jj].y;\r\n                    t=A1*B2-B1*A2;\r\n                    t1=(-C1)*B2-(-C2)*B1;\r\n                    t2=A1*(-C2)-A2*(-C1);\r\n                    if(t==0)\r\n                    {\r\n                        v.push_back(a[i][ii]);\r\n                        v.push_back(a[i][ii+1]);\r\n                        v.push_back(a[j][jj]);\r\n                        v.push_back(a[j][jj+1]);\r\n                    }\r\n                    x=t1/t;\r\n                    y=t2/t;\r\n                    if((x>=a[i][ii].x&&x<=a[i][ii+1].x||x<=a[i][ii].x&&x>=a[i][ii+1].x)&&(x>=a[j][jj].x&&x<=a[j][jj+1].x||x<=a[j][jj].x&&x>=a[j][jj+1].x))\r\n                    {\r\n                        if((y>=a[i][ii].y&&y<=a[i][ii+1].y||y<=a[i][ii].y&&y>=a[i][ii+1].y)&&(y>=a[j][jj].y&&y<=a[j][jj+1].y||y<=a[j][jj].y&&y>=a[j][jj+1].y))\r\n                        {\r\n                            s.x=x;\r\n                            s.y=y;\r\n                            v.push_back(s);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    int sz=v.size();\r\n    for(int i=0;i<sz;i++)\r\n    {\r\n        if(used[i]==0)\r\n        {\r\n            p.push_back(v[i]);\r\n            for(int j=i+1;j<sz;j++)\r\n            {\r\n                if(v[i].x==v[j].x&&v[i].y==v[j].y)used[j]=1;\r\n            }\r\n        }\r\n    }\r\n    getpts();\r\n    sz=fp.size();\r\n    for(int i=1;i<sz;i++)\r\n    {\r\n        if(fp[0].y>fp[i].y||(fp[0].y==fp[i].y&&fp[0].x>fp[i].x))swap(fp[0],fp[i]);\r\n    }\r\n    double ans=0,q;\r\n    pivot=fp[0];\r\n    sort(fp.begin(),fp.end(),polar_order);\r\n    sort(fp.begin(),fp.end(),asd);\r\n    fp.push_back(fp[0]);\r\n    sz=fp.size();\r\n    for(int i=0;i<sz;i++)\r\n    {\r\n       // for(int j=1;j<sz;j++)\r\n       // {\r\n         //   if(i!=j)\r\n          //  {\r\n                //(b.x-a.x)*(c.y-a.y)-(b.y-a.y)*(c.x-a.x)\r\n                q=(fp[i].x-fp[0].x)*(fp[i+1].y-fp[0].y)-(fp[i].y-fp[0].y)*(fp[i+1].x-fp[0].x);\r\n                //if(q>0)\r\n                    ans+=q;\r\n           // }\r\n        //}\r\n    }\r\n    \r\n    cout<<fixed<<setprecision(0)<<fabs(ans/2)<<endl;\r\n    /*for(int i=0;i<sz-1;i++)\r\n    {\r\n        cout<<fp[i].x<<" "<<fp[i].y<<endl;\r\n    }*/\r\n    return 0;\r\n}\r\n/*\r\n\r\n3\r\n-35 45 -50 50\r\n-15 35 -40 20\r\n-40 30 -30 20\r\n\r\n\r\n\r\n\r\nx(y1-y2)+y(x2-x1)+(x1y2-x2y1)\r\n\r\n\r\n*/'
p3
tp4
stp5
.