Pagini recente » Cod sursa (job #1201051) | Cod sursa (job #1637423) | Cod sursa (job #1000735) | Cod sursa (job #1083083) | Cod sursa (job #1201393)
#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=0,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;
for(int i=0;i<3;i++)
{
arie=arie+abs(tr[i].x0-tr[i].x1)*abs(tr[i].y0-tr[i].y1);
perimetru=perimetru+2*(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);
perimetru=perimetru-2*(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);
perimetru=perimetru+2*(abs(max1-min1)+abs(max2-min2));
}
g<<arie<<" "<<perimetru;
f.close();
return 0;
}