Cod sursa(job #981133)
#include <fstream>
using namespace std;
typedef struct drept2
{
long long x1,x2,y1,y2;
} drept;
drept a[8];
long long arie,perim;
void calc(int i,int j,int z);
int main ()
{
ifstream in("reuniune.in");
ofstream out("reuniune.out");
in>>a[0].x1>>a[0].y1>>a[0].x2>>a[0].y2;
in>>a[1].x1>>a[1].y1>>a[1].x2>>a[1].y2;
in>>a[2].x1>>a[2].y1>>a[2].x2>>a[2].y2;
calc(0,1,3);
calc(0,2,4);
calc(1,2,5);
calc(3,2,6);
arie=(a[0].x2-a[0].x1)*(a[0].y2-a[0].y1);
arie=arie-(a[3].x2-a[3].x1)*(a[3].y2-a[3].y1);
arie=arie+(a[1].x2-a[1].x1)*(a[1].y2-a[1].y1);
arie=arie-(a[4].x2-a[4].x1)*(a[4].y2-a[4].y1);
arie=arie+(a[2].x2-a[2].x1)*(a[2].y2-a[2].y1);
arie=arie-(a[5].x2-a[5].x1)*(a[5].y2-a[5].y1);
arie=arie+(a[6].x2-a[6].x1)*(a[6].y2-a[6].y1);
out<<arie<<" ";
perim=2*(a[0].x2-a[0].x1+a[0].y2-a[0].y1);
perim=perim-2*(a[3].x2-a[3].x1+a[3].y2-a[3].y1);
perim=perim+2*(a[1].x2-a[1].x1+a[1].y2-a[1].y1);
perim=perim-2*(a[4].x2-a[4].x1+a[4].y2-a[4].y1);
perim=perim+2*(a[2].x2-a[2].x1+a[2].y2-a[2].y1);
perim=perim-2*(a[5].x2-a[5].x1+a[5].y2-a[5].y1);
perim=perim+2*(a[6].x2-a[6].x1+a[6].y2-a[6].y1);
out<<perim;
in.close();
out.close();
}
void calc (int i,int j,int z)
{
if (a[i].x1<a[j].x1)
{
a[z].x1=a[j].x1;
if (a[i].x2>a[j].x1)
{
if (a[i].x2<a[j].x2) {a[z].x2=a[i].x2;} else {a[z].x2=a[j].x2;}
} else a[z].x2=a[j].x1;
} else
{
a[z].x1=a[i].x1;
if (a[j].x2<a[i].x1)
{
a[z].x2=a[i].x1;
} else
{
if (a[j].x2<a[i].x2) {a[z].x2=a[j].x2;} else {a[z].x2=a[i].x2;}
}
}
if (a[i].y1<a[j].y1)
{
a[z].y1=a[j].y1;
if (a[i].y2>a[j].y1)
{
if (a[i].y2<a[j].y2) {a[z].y2=a[i].y2;} else {a[z].y2=a[j].y2;}
} else a[z].y2=a[j].y1;
} else
{
a[z].y1=a[i].y1;
if (a[j].y2<a[i].y1)
{
a[z].y2=a[i].y1;
} else
{
if (a[j].y2<a[i].y2) {a[z].y2=a[j].y2;} else {a[z].y2=a[i].y2;}
}
}
}