Pagini recente » Cod sursa (job #430958) | Cod sursa (job #1482779) | Cod sursa (job #2241131) | Cod sursa (job #2355703) | Cod sursa (job #2647445)
#include <bits/stdc++.h>
#define max_coord 1e9
#define point pair<long long, long long>
#define x first
#define y second
using namespace std;
ifstream f("reuniune.in");
ofstream g("reuniune.out");
struct rect
{
point down, up;
};
vector<rect> r;
point r1, r2;
long long ar, per;
long long arie(rect r1)
{
return 1LL * (r1.up.x - r1.down.x) * (r1.up.y - r1.down.y);
}
long long perimetru(rect r1)
{
return 2 * (r1.up.x - r1.down.x) + 2 * (r1.up.y - r1.down.y);
}
rect intersect(rect r1, rect r2)
{
point d, u;
d = {max(r1.down.x, r2.down.x), max(r1.down.y, r2.down.y)};
u = {min(r1.up.x, r2.up.x), min(r1.up.y, r2.up.y)};
return {d, u};
}
void Read()
{
for(int i = 1;i <= 3;++i)
{
f>>r1.x>>r1.y>>r2.x>>r2.y;
r.push_back({r1, r2});
}
} void Solve()
{
for(int i = 1;i < (1 << 3);++i)
{
rect inter = {make_pair(-max_coord, -max_coord), make_pair(max_coord, max_coord)};
long long nr = 0;
for(int j = 0;j < 3;++j)
if((1 << j) & i)
{
inter = intersect(r[j], inter);
++nr;
}
nr = (nr % 2 == 0) ? -1 : 1;
ar += nr * arie(inter);
per += nr * perimetru(inter);
}
g<<ar<<" "<<per;
}
int main()
{
Read();
Solve();
return 0;
}