Pagini recente » Cod sursa (job #218873) | Cod sursa (job #2074307) | Cod sursa (job #2372305) | Cod sursa (job #1166183) | Cod sursa (job #1841041)
#include <fstream>
using namespace std;
struct Drept
{
int x0, y0, x1, y1;
long long arie()
{
return ((long long)(x1 - x0)) * (y1 - y0);
}
long long perimetru()
{
return ((x1 - x0) + (y1 - y0)) * 2LL;
}
};
Drept inter(Drept a, Drept b)
{
Drept r;
r.x0 = max(a.x0, b.x0);
r.y0 = max(a.y0, b.y0);
r.x1 = min(a.x1, b.x1);
r.y1 = min(a.y1, b.y1);
if(r.x0 > r.x1 || r.y0 > r.y1)
{
r.x0 = r.x1 = r.y0 = r.y1 = 0;
}
return r;
}
int main()
{
long long ar, pr;
Drept a, b, c, ab, bc, ac, abc;
ifstream f("reuniune.in");
ofstream g("reuniune.out");
f >> a.x0 >> a.y0 >> a.x1 >> a.y1;
f >> b.x0 >> b.y0 >> b.x1 >> b.y1;
f >> c.x0 >> c.y0 >> c.x1 >> c.y1;
ab = inter(a, b);
ac = inter(a, c);
bc = inter(b, c);
abc = inter(ab, c);
ar = a.arie() + b.arie() + c.arie() -
ab.arie() - ac.arie() - bc.arie() +
abc.arie();
pr = a.perimetru() + b.perimetru() + c.perimetru() -
ab.perimetru() - ac.perimetru() - bc.perimetru() +
abc.perimetru();
g << ar << ' ' << pr;
f.close();
g.close();
return 0;
}