Pagini recente » Cod sursa (job #2822748) | Cod sursa (job #48993) | Cod sursa (job #1029582) | Cod sursa (job #2095193) | Cod sursa (job #2653664)
#include <fstream>
using namespace std;
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");
struct p
{
long long x, y;
};
struct du
{
p s, d;
};
long long aria(du x)
{
if (x.s.x == -1)
return 0;
return (x.d.x - x.s.x)*(x.d.y - x.s.y);
}
long long per(du x)
{
if (x.s.x == -1)
return 0;
return 2*(x.d.x - x.s.x + x.d.y - x.s.y);
}
du inter(du a, du b)
{
if (a.s.x == -1 || b.s.x == -1)
return {-1, 0, 0, 0};
du c;
long long st, dr;
//axa Ox
st = max(a.s.x, b.s.x);
dr = min(a.d.x, b.d.x);
if (st > dr)
return {-1, 0, 0, 0};
c.s.x = st;
c.d.x = dr;
//axa Oy
st = max(a.s.y, b.s.y);
dr = min(a.d.y, b.d.y);
if (st > dr)
return {-1, 0, 0, 0};
c.s.y = st;
c.d.y = dr;
return c;
}
int main()
{
int i;
du d[4];
for (i = 1; i<=3; i++)
{
fin >> d[i].s.x >> d[i].s.y >> d[i].d.x >> d[i].d.y;
}
long long a, p;
a = p = 0;
du e[4];
e[1] = inter(d[1], d[2]);
e[2] = inter(d[1], d[3]);
e[3] = inter(d[2], d[3]);
for (i = 1; i<=3; i++)
{
a += aria(d[i]);
a -= aria(e[i]);
p += per(d[i]);
p -= per(e[i]);
}
a += aria(inter(e[1], d[3]));
p += per(inter(e[1], d[3]));
fout << a << ' ' << p;
return 0;
}