Pagini recente » Cod sursa (job #662344) | Cod sursa (job #429749) | Cod sursa (job #1417849) | Cod sursa (job #2284772) | Cod sursa (job #1751290)
#include <iostream>
#include <fstream>
using namespace std;
struct dreptunghi
{
int x0,y0,x1,y1;
};
dreptunghi dr[3];
inline long long arie(dreptunghi &d)
{
return 1LL*(d.x1-d.x0)*(d.y1-d.y0);
}
inline long long perimetru(dreptunghi &d)
{
return 2LL*(d.x1-d.x0+d.y1-d.y0);
}
dreptunghi intersct(dreptunghi &d1, dreptunghi &d2)
{
dreptunghi d;
d.x0=max(d1.x0, d2.x0);
d.y0=max(d1.y0, d2.y0);
d.x1=min(d1.x1, d2.x1);
d.y1=min(d1.y1, d2.y1);
if (d.x0>d.x1 || d.y0>d.y1)
d.x0=d.x1=d.y0=d.y1=0; //intersectie vida
return d;
}
int main()
{
ifstream f("reuniune.in");
ofstream g("reuniune.out");
long long A=0, P=0;
int i,j;
dreptunghi dd;
for (i=0; i<=2; i++)
{
f>>dr[i].x0>>dr[i].y0>>dr[i].x1>>dr[i].y1;
A+=arie(dr[i]);
P+=perimetru(dr[i]);
}
for (i=0; i<2; i++)
for (j=i+1; j<=2; j++)
{
dd=intersct(dr[i], dr[j]);
A-=arie(dd);
P-=perimetru(dd);
}
dd=intersct(dd,dr[0]);
//dd=intersct(intersct(dr[0],dr[1]),dr[2]);
A+=arie(dd);
P+=perimetru(dd);
g<<A<<' '<<P;
f.close();
g.close();
return 0;
}