Pagini recente » Cod sursa (job #1559589) | Cod sursa (job #979263) | Cod sursa (job #1954385) | Cod sursa (job #1977555) | Cod sursa (job #2088520)
#include <fstream>
#include <cmath>
using namespace std;
ifstream cin("reuniune.in");
ofstream cout("reuniune.out");
struct drept{
long long x1, y1, x2, y2, a, p;
} v[5];
drept in(drept a, drept b);
long long arie(drept a);
long long per(drept a);
int main()
{
for(int i=1; i<=3; i++)
cin>>v[i].x1>>v[i].y1>>v[i].x2>>v[i].y2;
long long A=arie(v[1])+arie(v[2])+arie(v[3]);
drept d1, d2, d3;
d1=in(v[1], v[2]);
d2=in(v[2], v[3]);
d3=in(v[1], v[3]);
A-=(arie(d1)+arie(d2)+arie(d3));
drept d4, d5;
d4=in(d2, d3);
d5=in(d1, d4);
A+=arie(d5);
cout<<A<<" ";
long long P=per(v[1])+per(v[2])+per(v[3]);
P-=(per(d1)+per(d2)+per(d3));
P+=per(d5);
cout<<P;
return 0;
}
drept in(drept a, drept b)
{
drept 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);
if(c.x1>c.x2)
c.x1=c.x2;
if(c.y1>c.y2)
c.y1=c.y2;
return c;
}
long long arie(drept a)
{
return abs((a.x2-a.x1)*(a.y2-a.y1));
}
long long per(drept a)
{
return 2*(abs(a.x2-a.x1)+abs(a.y2-a.y1));
}