Pagini recente » Cod sursa (job #556747) | Cod sursa (job #2510333) | Cod sursa (job #870375) | Cod sursa (job #60884) | Cod sursa (job #1201391)
#include <fstream>
#include <math.h>
using namespace std;
typedef struct {long long x0,y0,x1,y1;} Triunghi;
int main()
{
ifstream f("reuniune.in");
ofstream g("reuniune.out");
Triunghi tr[3];
long long min1,min2,max1,max2,perimetru,arie=0;
int comun=0;
min1=min2=1000000001;
max1=max2=-1000000001;
for(int i=0;i<3;i++)
{
f>>tr[i].x0>>tr[i].y0>>tr[i].x1>>tr[i].y1;
if(tr[i].x0<min1) min1=tr[i].x0;
if(tr[i].y0<min2) min2=tr[i].y0;
if(tr[i].x1>max1) max1=tr[i].x1;
if(tr[i].y1>max2) max2=tr[i].y1;
}
perimetru=2*(abs(min1-max1) + abs(min2-max2));
for(int i=0;i<3;i++)
{
arie=arie+abs(tr[i].x0-tr[i].x1)*abs(tr[i].y0-tr[i].y1);
}
for(int i=0;i<2;i++)
for(int j=i+1;j<3;j++)
{
if(tr[j].y1>=tr[i].y0 && tr[j].y1<=tr[i].y1 || tr[j].y0>=tr[i].y0 && tr[j].y0<=tr[i].y1)
if(tr[j].x0>=tr[i].x0 && tr[j].x0<=tr[i].x1 || tr[j].x1>=tr[i].x0 && tr[j].x1<=tr[i].x1)
{
max1=max(tr[i].x0,tr[j].x0);
max2=max(tr[i].y0,tr[j].y0);
min1=min(tr[i].x1,tr[j].x1);
min2=min(tr[i].y1,tr[j].y1);
arie=arie-abs(max1-min1)*abs(max2-min2);
comun++;
}
}
if(comun==3)
{
max1=max(max(tr[0].x0,tr[1].x0),tr[2].x0);
max2=max(max(tr[0].y0,tr[1].y0),tr[2].y0);
min1=min(min(tr[0].x1,tr[1].x1),tr[2].x1);
min2=min(min(tr[0].y1,tr[1].y1),tr[2].y1);
arie=arie+abs(max1-min1)+abs(max2-min2);
}
g<<arie<<" "<<perimetru;
f.close();
return 0;
}