Pagini recente » Cod sursa (job #1291512) | Cod sursa (job #703312) | Cod sursa (job #660432) | Cod sursa (job #2949876) | Cod sursa (job #2336238)
#include <bits/stdc++.h>
#define all(cont) cont.begin(), cont.end()
#define pb push_back
#define fi first
#define se second
#define DEBUG(x) cerr << (#x) << ": " << (x) << '\n'
using namespace std;
typedef pair <int, int> pii;
typedef vector <int> vi;
typedef long long ll;
typedef unsigned long long ull;
struct Rectangle {
int x0, y0, x1, y1;
Rectangle intersect (const Rectangle &other) {
Rectangle ret;
ret.x0 = max (x0, other.x0);
ret.y0 = max (y0, other.y0);
ret.x1 = min (x1, other.x1);
ret.y1 = min (y1, other.y1);
if (x0 > x1 || y0 > y1) return {0, 0, 0, 0};
return ret;
}
ll getArea() {
return 1LL * (x1 - x0) * (y1 - y0);
}
ll getPerimeter() {
return 2LL * (x1 - x0) + 2LL * (y1 - y0);
}
};
Rectangle rectangle[4];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
#ifdef LOCAL_DEFINE
freopen (".in", "r", stdin);
#endif
freopen ("reuniune.in", "r", stdin);
freopen ("reuniune.out", "w", stdout);
for (int i = 1; i <= 3; ++i) {
int x0, y0, x1, y1;
scanf ("%d%d%d%d", &x0, &y0, &x1, &y1);
rectangle[i] = {x0, y0, x1, y1};
}
ll area = 0, perimeter = 0;
for (int i = 1; i <= 3; ++i) {
area += rectangle[i].getArea();
perimeter += rectangle[i].getPerimeter();
}
for (int i = 1; i <= 3; ++i) {
for (int j = i + 1; j <= 3; ++j) {
Rectangle intersection = rectangle[i].intersect (rectangle[j]);
area -= intersection.getArea();
perimeter -= intersection.getPerimeter();
}
}
Rectangle intersection = (rectangle[1].intersect (rectangle[2])).intersect (rectangle[3]);
area += intersection.getArea();
perimeter += intersection.getPerimeter();
printf ("%lld %lld\n", area, perimeter);
fclose (stdin);
fclose (stdout);
#ifdef LOCAL_DEFINE
fprintf (stderr, "Time elapsed: %lf s.\n", 1.0 * clock() / CLOCKS_PER_SEC);
#endif
return 0;
}