Pagini recente » Cod sursa (job #1553545) | Cod sursa (job #1237445) | Cod sursa (job #289872) | Cod sursa (job #1583987) | Cod sursa (job #3226280)
#include <fstream>
using namespace std;
ifstream cin ("reuniune.in");
ofstream cout ("reuniune.out");
struct ura
{
int x1, y1, x2, y2;
};
ura intsect(ura a, ura b)
{
if (a.x2 < b.x1 || a.y2 < b.y1 || b.x2 < a.x1 || b.y2 < a.y1)
return {0, 0, 0, 0};
else
return {max(a.x1, b. x1), max(a.y1, b.y1), min(a.x2, b.x2), min(a.y2, b.y2)};
}
long long periCalc(ura d)
{
return 2 * ((d.x2 - d.x1) + (d.y2 - d.y1));
}
long long areaCalc(ura d)
{
return (d.x2 - d.x1) * (d.y2 - d.y1);
}
int main()
{
ura d1, d2, d3;
cin >> d1.x1 >> d1.y1 >> d1.x2 >> d1.y2;
cin >> d2.x1 >> d2.y1 >> d2.x2 >> d2.y2;
cin >> d3.x1 >> d3.y1 >> d3.x2 >> d3.y2;
ura d1_d2 = intsect(d1, d2);
ura d1_d3 = intsect(d1, d3);
ura d2_d3 = intsect(d2, d3);
ura d1_d2_d3 = intsect(d1_d2, d3);
long long area = areaCalc(d1) + areaCalc(d2) + areaCalc(d3) - areaCalc(d1_d2) - areaCalc(d1_d3) - areaCalc(d2_d3) + areaCalc(d1_d2_d3);
long long peri = periCalc(d1) + periCalc(d2) + periCalc(d3) - periCalc(d1_d2) - periCalc(d1_d3) - periCalc(d2_d3) + periCalc(d1_d2_d3);
cout << area << ' ' << peri;
return 0;
}