Pagini recente » Cod sursa (job #1247182) | Cod sursa (job #833963) | Cod sursa (job #2240952) | Cod sursa (job #414412) | Cod sursa (job #2711518)
#include <bits/stdc++.h>
#define int long long
#define ABS(x) ((x) >= 0 ? (x) : -(x))
using namespace std;
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");
class rectangle {
public:
int x1, y1, x2, y2;
void read() {
fin >> x1 >> y1 >> x2 >> y2;
}
int perimeter() {
return (ABS(x1 - x2) + ABS(y1 - y2)) << 1;
}
int area() {
return ABS(x1 - x2) * ABS(y1 - y2);
}
};
rectangle intersect(const rectangle &A, const rectangle &B) {
rectangle ans;
ans.x1 = max(A.x1, B.x1);
ans.y1 = max(A.y1, B.y1);
ans.x2 = min(A.x2, B.x2);
ans.y2 = min(A.y2, B.y2);
return ans;
}
int32_t main() {
vector<rectangle> a(3);
for(auto &x : a)
x.read();
int A = a[0].area() + a[1].area() + a[2].area()
- intersect(a[0], a[1]).area() - intersect(a[0], a[2]).area() - intersect(a[1], a[2]).area()
+ intersect(intersect(a[0], a[1]), a[2]).area();
int P = a[0].perimeter() + a[1].perimeter() + a[2].perimeter()
- intersect(a[0], a[1]).perimeter() - intersect(a[0], a[2]).perimeter() - intersect(a[1], a[2]).perimeter()
+ intersect(intersect(a[0], a[1]), a[2]).perimeter();
fout << A << ' ' << P << '\n';
}