Pagini recente » Cod sursa (job #2031815) | Cod sursa (job #2042132) | Cod sursa (job #1961654) | Cod sursa (job #1547018) | Cod sursa (job #1201398)
#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++)
{
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);
if(max1<=min1 && max2<=min2)
{
arie=arie-abs(max1-min1)*abs(max2-min2);
perimetru=perimetru-2*(abs(max1-min1)+abs(max2-min2));
}
}
Triunghi a;
a.x0=max(tr[0].x0,tr[1].x0);
a.y0=max(tr[0].y0,tr[1].y0);
a.x1=min(tr[0].x1,tr[1].x1);
a.y1=min(tr[0].y1,tr[1].y1);
if(a.x0<=a.x1 && a.y0<=a.y1)
{
max1=max(tr[2].x0,a.x0);
max2=max(tr[2].y0,a.y0);
min1=min(tr[2].x1,a.x1);
min2=min(tr[2].y1,a.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;
}