Pagini recente » Cod sursa (job #673618) | Cod sursa (job #2688769) | Cod sursa (job #1126000) | Cod sursa (job #3124334) | Cod sursa (job #1376414)
#include<fstream>
using namespace std;
typedef int64_t var;
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");
struct Drept {
var x1, x2, y1, y2;
Drept(var a, var b, var c, var d) {
x1 = a;
x2 = b;
y1 = c;
y2 = d;
}
Drept() {
x1 = x2 = y1 = y2 = 0;
}
};
Drept intersect(Drept d1, Drept d2) {
var x1 = d1.x1, x2 = d1.x2,
x3 = d2.x1, x4 = d2.x2;
var y1 = d1.y1, y2 = d1.y2,
y3 = d2.y1, y4 = d2.y2;
var xr = max(x1, x3),
xrp = min(x2, x4);
if(xr >= xrp) return Drept();
var yr = max(y1, y3),
yrp = min(y2, y4);
if(yr >= yrp) return Drept();
return Drept(xr, xrp, yr, yrp);
}
var A(Drept d) {
return (d.x2 - d.x1)*(d.y2 - d.y1);
}
var P(Drept d) {
return 2*((d.x2 - d.x1) + (d.y2 - d.y1));
}
int main() {
Drept d[4];
for(var i=1; i<=3; i++) {
fin>>d[i].x1>>d[i].y1>>d[i].x2>>d[i].y2;
}
Drept i1 = intersect(d[1], d[2]),
i2 = intersect(d[2], d[3]),
i3 = intersect(d[1], d[3]),
i4 = intersect(i1, d[3]);
fout << A(d[1]) + A(d[2]) + A(d[3]) - A(i1) - A(i2) - A(i3) + A(i4)<<" ";
fout << P(d[1]) + P(d[2]) + P(d[3]) - P(i1) - P(i2) - P(i3) + P(i4);
return 0;
}