Pagini recente » Cod sursa (job #173691) | Cod sursa (job #511091) | Profil MarinPeptenaru | Cod sursa (job #1571489) | Cod sursa (job #1291489)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("reuniune.in");
ofstream g ("reuniune.out");
struct Dreptunghi {
long long x, y, z, t;
} dreptunghi[4];
void citeste () {
for (int i = 1; i <= 3; i++)
f >> dreptunghi[i].x >> dreptunghi[i].y >> dreptunghi[i].z >> dreptunghi[i].t;
}
inline long long perimetru(Dreptunghi d) {
return 2 * (d.z - d.x + d.t - d.y);
}
inline long long arie(Dreptunghi d) {
return (d.z - d.x) * (d.t - d.y);
}
inline Dreptunghi intersectie(Dreptunghi a, Dreptunghi b) {
Dreptunghi sol;
sol.x = max(a.x, b.x);
sol.y = max(a.y, b.y);
sol.z = min(a.z, b.z);
sol.t = min(a.t, b.t);
if (sol.x > sol.z || sol.y > sol.t)
sol.x = sol.y = sol.z = sol.t = 0;
return sol;
}
void rezolva() {
long long arie_reuniune = arie(dreptunghi[1]) + arie(dreptunghi[2]) + arie(dreptunghi[3]) -
arie(intersectie(dreptunghi[1], dreptunghi[2])) -
arie(intersectie(dreptunghi[2], dreptunghi[3])) -
arie(intersectie(dreptunghi[3], dreptunghi[1])) +
arie(intersectie(intersectie(dreptunghi[1], dreptunghi[2]), dreptunghi[3]));
long long perimetru_reuniune = perimetru(dreptunghi[1]) + perimetru(dreptunghi[2]) + perimetru(dreptunghi[3]) -
perimetru(intersectie(dreptunghi[1], dreptunghi[2])) -
perimetru(intersectie(dreptunghi[2], dreptunghi[3])) -
perimetru(intersectie(dreptunghi[3], dreptunghi[1])) +
perimetru(intersectie(intersectie(dreptunghi[1], dreptunghi[2]), dreptunghi[3]));
g << arie_reuniune << ' ' << perimetru_reuniune << '\n';
}
int main() {
citeste();
rezolva();
return 0;
}