Pagini recente » Cod sursa (job #647659) | Cod sursa (job #869558) | Cod sursa (job #144698) | Cod sursa (job #2068652) | Cod sursa (job #3340326)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int INF = 1e9;
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");
int X0[3], Y0[3], X1[3], Y1[3];
int xminren, xmaxren, yminren, ymaxren;
ll area;
int main() {
// ios::sync_with_stdio(0);
// cin.tie(0);
// cout.tie(0);
for(int i = 0; i < 3; i++) {
fin >> X0[i] >> Y0[i] >> X1[i] >> Y1[i];
}
xminren = yminren = INF + 1;
xmaxren = ymaxren = -INF - 1;
for(int i = 0; i < 3; i++) {
xminren = min(xminren, X0[i]);
xmaxren = max(xmaxren, X1[i]);
yminren = min(yminren, Y0[i]);
ymaxren = max(ymaxren, Y1[i]);
}
for(int mask = 1; mask < (1 << 3); mask++) {
int xmininter, xmaxinter, ymininter, ymaxinter;
xmininter = ymininter = -INF - 1;
xmaxinter = ymaxinter = INF + 1;
for(int i = 0; i < 3; i++) {
if(mask >> i & 1) {
xmininter = max(xmininter, X0[i]);
xmaxinter = min(xmaxinter, X1[i]);
ymininter = max(ymininter, Y0[i]);
ymaxinter = min(ymaxinter, Y1[i]);
}
}
// cout << bitset<3>(mask) << '\n';
// cout << xmininter << ' ' << xmaxinter << ' ' << ymininter << ' ' << ymaxinter << '\n';
int sign = (__builtin_popcount(mask) % 2 == 1 ? 1 : -1);
if(xmininter <= xmaxinter && ymininter <= ymaxinter) {
// cout << "GIGEL\n";
area += sign * (ll)(ymaxinter - ymininter) * (xmaxinter - xmininter);
}
}
fout << area << ' ' << 2 * (xmaxren - xminren + ymaxren - yminren) << '\n';
return 0;
}