Pagini recente » Cod sursa (job #2552347) | Cod sursa (job #2539694) | Cod sursa (job #2134423) | Cod sursa (job #3220393) | Cod sursa (job #1327807)
#include <fstream>
#include <iostream>
using namespace std;
struct drepT{
long long x1, y1, x2, y2;
};
drepT ZERO;
bool operator == (const drepT &d1, const drepT &d2) {
if (d1.x1 == d2.x1 && d1.x2 == d2.x2 && d1.y1 == d2.y1 && d1.y2 == d2.y2)
return true;
return false;
}
drepT reuniune(drepT d1, drepT d2) {
if (d1 == ZERO || d2 == ZERO)
return ZERO;
drepT interS;
if (d1.x1 > d2.x1) {
drepT aux = d1;
d1 = d2;
d2 = aux;
}
if (d2.x1 > d1.x2)
return ZERO;
interS.x1 = d2.x1;
interS.x2 = min(d2.x2, d1.x2);
if (d1.y1 > d2.y1) {
drepT aux = d1;
d1 = d2;
d2 = aux;
}
if (d2.y1 > d1.y2)
return ZERO;
interS.y1 = d2.y1;
interS.y2 = min(d1.y2, d2.y2);
return interS;
}
long long diffx(drepT d) {
long long diff = d.x1 - d.x2;
if (diff < 0)
diff = -diff;
return diff;
}
long long diffy(drepT d) {
long long diff = d.y1 - d.y2;
if (diff < 0)
diff = -diff;
return diff;
}
long long arie(drepT d) {
return diffx(d) * diffy(d);
}
long long perimetru(drepT d) {
return (2 * diffx(d)) + (2 * diffy(d));
}
int main () {
ifstream cin("reuniune.in");
ofstream cout("reuniune.out");
drepT D[3];
for (int i = 0 ; i < 3 ; ++i)
cin >> D[i].x1 >> D[i].y1 >> D[i].x2 >> D[i].y2;
// cerr << arie(D[0]) << " " << arie(D[1]) << " " << arie(D[2]) << "\n";
drepT r1 = reuniune(D[0], D[1]), r2 = reuniune(D[1], D[2]);
drepT r3 = reuniune(D[0], D[2]);
drepT r4 = reuniune(r1, D[2]);
// cerr<<arie(r1) << " " << arie(r2) << " " << arie(r3) << "\n";
cout << arie(D[0]) + arie(D[1]) + arie(D[2]) - arie(r1) - arie(r2) - arie(r3) + arie(r4) << " ";
cout << perimetru(D[0]) + perimetru(D[1]) + perimetru(D[2]) - perimetru(r1) - perimetru(r2) - perimetru(r3) + perimetru(r4) << "\n";
return 0;
}