Cod sursa(job #531467)
#include<stdio.h>
#include<fstream>
FILE *in,*out;
using namespace std;
typedef struct dreptunghi
{
long long int x1,y1;
long long int x2,y2;
};
long long int perimetru(dreptunghi x)
{
return 2*(x.x2-x.x1)+2*(x.y2-x.y1);
}
long long int aria(dreptunghi x)
{
return (x.x2-x.x1)*(x.y2-x.y1);
}
long long int max(long long int x, long long int y)
{
if(x>y)
return x;
return y;
}
long long int min(long long int x, long long int y)
{
if(x<y)
return x;
return y;
}
dreptunghi intersectie(dreptunghi x, dreptunghi y)
{
dreptunghi i;
i.x1=max(x.x1,y.x1);
i.y1=max(x.y1,y.y1);
i.x2=min(x.x2,y.x2);
i.y2=min(x.y2,y.y2);
if(i.x1>i.x2 || i.y1>i.y2)
i.x1=i.x2=i.y1=i.y2=0;
return i;
}
dreptunghi a,b,c;
int main()
{
ifstream in("reuniune.in");
out=fopen("reuniune.out","wt");
in>>a.x1>>a.y1>>a.x2>>a.y2;
in>>b.x1>>b.y1>>b.x2>>b.y2;
in>>c.x1>>c.y1>>c.x2>>c.y2;
fprintf(out,"%lld ",aria(a)+aria(b)+aria(c)-aria(intersectie(a,b))-aria(intersectie(b,c))-aria(intersectie(a,c))+aria(intersectie(intersectie(b,c),a)));
fprintf(out,"%lld",perimetru(a)+perimetru(b)+perimetru(c)-perimetru(intersectie(a,b))-perimetru(intersectie(b,c))
-perimetru(intersectie(a,c))+perimetru(intersectie(intersectie(b,c),a)));
return 0;
}