Pagini recente » Cod sursa (job #641025) | Cod sursa (job #1828178) | Cod sursa (job #1133827) | Cod sursa (job #1550754) | Cod sursa (job #1226438)
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int mask,one,i,j,f;
bool flag;
int current[2][2];
int D[3][2][2];
pair < long long , long long > total;
long long arie(int D[2][2])
{
return (((long long)D[0][1]-D[0][0])*(D[1][1]-D[1][0]));
}
long long perimetru(int D[2][2])
{
return 2*(((long long)D[0][1]-D[0][0])+(D[1][1]-D[1][0]));
}
void intersectie(int A[2][2],int B[2][2])
{
int C[2][2];
C[0][0]=max(A[0][0],B[0][0]);
C[0][1]=min(A[0][1],B[0][1]);
C[1][0]=max(A[1][0],B[1][0]);
C[1][1]=min(A[1][1],B[1][1]);
memcpy(A,C,sizeof(C));
}
int main()
{
freopen("reuniune.in","r",stdin);
freopen("reuniune.out","w",stdout);
for (f=0;f<=2;++f)
for (i=0;i<=1;++i)
for (j=0;j<=1;++j)
scanf("%d",&D[f][j][i]);
for (mask=1;mask<=7;++mask)
{
one=0;
flag=false;
for (i=one=0;i<=2;++i)
if (mask&(1<<i))
{
++one;
if (!flag)
{
flag=true;
memcpy(current,D[i],sizeof(D[i]));
continue;
}
intersectie(current,D[i]);
}
total.first+=(one&1) ? -arie(current) : arie(current);
total.second+=(one&1) ? -perimetru(current) : perimetru(current);
}
printf("%lld %lld\n",-total.first,-total.second);
return 0;
}