Pagini recente » Cod sursa (job #570699) | Cod sursa (job #1881141) | Cod sursa (job #541108) | Cod sursa (job #554735) | Cod sursa (job #3233571)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream f("reuniune.in");
ofstream g("reuniune.out");
struct dr{
int X1,X2;
int Y1,Y2;
}V[11];
int n,i,pr,ar,aria,peri,j,nr;
ll arie (dr A)
{ if (A.X1<=A.X2&&A.Y1<=A.Y2)return (A.X2-A.X1)*(A.Y2-A.Y1);
return 0;
}
ll per (dr A)
{ if (A.X1<=A.X2&&A.Y1<=A.Y2)return (A.X2-A.X1)*2+(A.Y2-A.Y1)*2;
}
dr inter (dr A,dr B)
{ dr C;
C.X1=max(A.X1,B.X1);
C.X2=min(A.X2,B.X2);
C.Y1=max(A.Y1,B.Y1);
C.Y2=min(A.Y2,B.Y2);
return C;
}
int main()
{ n=3;
for (i=1;i<=n;i++)
f>>V[i].X1>>V[i].Y1>>V[i].X2>>V[i].Y2;
for (i=1;i<(1<<n);i++)
{ nr=0;
dr D;
for (j=0;j<n;j++)
if (i&(1<<j))
{ nr++;
if(nr==1)D=V[j+1];
else D=inter(D,V[j+1]);
}
if (nr&1){ aria+=arie(D);peri+=per(D);}
else {aria-=arie(D);peri-=per(D);}
}
g<<aria<<" "<<peri<<'\n';
return 0;
}