Pagini recente » Cod sursa (job #2818176) | Cod sursa (job #126404) | Cod sursa (job #2583452) | Cod sursa (job #2860587) | Cod sursa (job #1452160)
#include <cstdio>
long long cit() {
long long ans = 0;
char c = getchar();
bool neg = false;
while (c < '0' || c > '9') {
if (c == '-') {
c = getchar();
neg = true;
break;
}
c = getchar();
}
while (c >= '0' && c <= '9') {
ans = (ans << 3) + (ans << 1) + (c - '0');
c = getchar();
}
return (neg) ? -ans : ans;
}
void afis(long long n) {
int l = 0;
char c[20];
if (n == 0) {
putchar('0');
}
if (n < 0) {
putchar('-');
n = -n;
}
while (n > 0) {
c[l++] = n % 10 + '0';
n /= 10;
}
for (int i = l - 1; i >= 0; i--) {
putchar(c[i]);
}
putchar(' ');
}
long long a[3], b[3], c[3], d[3];
long long dbl(int i, int j, long long& tp) {
if (c[i] <= c[j] && a[i] >= a[j] && b[i] >= b[j] && d[i] <= d[j]) {
if ((c[i] - a[i]) * (d[i] - b[i]) != 0) {
tp -= 2 * (c[i] - a[i] + d[i] - b[i]);
} else {
tp -= (c[i] - a[i] + d[i] - b[i]);
}
return (c[i] - a[i]) * (d[i] - b[i]);
}
if (c[j] <= c[i] && a[j] >= a[i] && b[j] >= b[i] && d[j] <= d[i]) {
if ((c[j] - a[j]) * (d[j] - b[j]) != 0) {
tp -= 2 * (c[j] - a[j] + d[j] - b[j]);
} else {
tp -= (c[j] - a[j] + d[j] - b[j]);
}
return (c[j] - a[j]) * (d[j] - b[j]);
}
if (c[i] <= a[j] || c[j] <= a[j] || b[i] >= d[j] || b[j] >= d[i]) {
if (c[i] == a[j] || c[j] == a[i]) {
long long su = (d[i] < d[j]) ? d[i] : d[j];
long long jo = (b[i] > b[j]) ? b[i] : b[j];
tp -= (su - jo);
}
if (b[i] == d[j] || b[j] == d[i]) {
long long st = (a[i] > a[j]) ? a[i] : a[j];
long long dr = (c[i] < c[j]) ? c[i] : c[j];
tp -= (dr - st);
}
return 0;
}
long long st = (a[i] > a[j]) ? a[i] : a[j];
long long dr = (c[i] < c[j]) ? c[i] : c[j];
long long su = (d[i] < d[j]) ? d[i] : d[j];
long long jo = (b[i] > b[j]) ? b[i] : b[j];
tp -= 2 * (dr - st + su - jo);
return (dr - st) * (su - jo);
}
int main() {
freopen("reuniune.in", "r", stdin);
freopen("reuniune.out", "w", stdout);
for (int i = 0; i < 3; i++) {
a[i] = cit();
b[i] = cit();
c[i] = cit();
d[i] = cit();
}
long long ta = 0, tp = 0;
for (int i = 0; i < 3; i++) {
ta += (c[i] - a[i]) * (d[i] - b[i]);
if (c[i] == a[i] || d[i] == b[i]) {
tp += (c[i] - a[i] + d[i] - b[i]);
} else {
tp += 2 * (c[i] - a[i] + d[i] - b[i]);
}
}
long long s1 = dbl(0, 1, tp), s2 = dbl(1, 2, tp), s3 = dbl(2, 0, tp);
ta -= s1;
ta -= s2;
ta -= s3;
long long st, dr, su, jo;
if (s1 != 0 && s2 != 0 && s3 != 0) {
st = (a[0] > a[1]) ? a[0] : a[1];
dr = (c[0] < c[1]) ? c[0] : c[1];
su = (d[0] < d[1]) ? d[0] : d[1];
jo = (b[0] > b[1]) ? b[0] : b[1];
st = (st > a[2]) ? st : a[2];
dr = (dr < c[2]) ? dr : c[2];
su = (su < d[2]) ? su : d[2];
jo = (jo > b[2]) ? jo : b[2];
ta += (su - jo) * (dr - st);
tp += 2 * (su - jo + dr - st);
}
afis(ta);
afis(tp);
return 0;
}