Pagini recente » Cod sursa (job #1069250) | Cod sursa (job #440718) | Rating Ana Maria Radu (anamariaradu) | Cod sursa (job #2882990) | Cod sursa (job #2195170)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("reuniune.in");
ofstream g("reuniune.out");
struct dreptunghi
{
int x1, y1, x2, y2; //x1<=x2, y1<=y2
};
long long aria(dreptunghi d)
{
return 1LL * (d.x2 - d.x1) * (d.y2 - d.y1);
}
long long perimetru(dreptunghi d)
{
return 2LL * (d.x2 - d.x1 + d.y2 - d.y1);
}
dreptunghi intersectie(dreptunghi d1, dreptunghi d2)
{
dreptunghi d;
d.x1 = max(d1.x1, d2.x1);
d.y1 = max(d1.y1, d2.y1);
d.x2 = min(d1.x2, d2.x2);
d.y2 = min(d1.y2, d2.y2);
if(d.x1 > d.x2 || d.y1 > d.y2)
{
d.x1 = d.x2 = 0; //intersectie vida (dreptunghi vid)
d.y1 = d.y2 = 0;
}
return d;
}
int main()
{
dreptunghi d1, d2, d3;
f >> d1.x1 >> d1.y1 >> d1.x2 >> d1.y2;
f >> d2.x1 >> d2.y1 >> d2.x2 >> d2.y2;
f >> d3.x1 >> d3.y1 >> d3.x2 >> d3.y2;
long long a = 0, p = 0;
a = aria(d1) + aria(d2) + aria(d3) - aria(intersectie(d1, d2)) - aria(intersectie(d2, d3)) - aria(intersectie(d1, d3));
a += aria(intersectie(d1, intersectie(d2, d3)));
p = perimetru(d1) + perimetru(d2) + perimetru(d3) - perimetru(intersectie(d1, d2)) - perimetru(intersectie(d2, d3)) - perimetru(intersectie(d1, d3));
p += perimetru(intersectie(d1, intersectie(d2, d3)));
g<<a<<' '<<p;
return 0;
}