Pagini recente » Cod sursa (job #3323095) | Cod sursa (job #903738) | Cod sursa (job #1099737) | Profil VerestiucAndrei | Cod sursa (job #3359220)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");
struct Rect {
long long x0, y0, x1, y1;
};
Rect r[3];
vector<long long> xs, ys;
int a[10][10];
int main() {
for(int i = 0; i < 3; i++) {
fin >> r[i].x0 >> r[i].y0 >> r[i].x1 >> r[i].y1;
xs.push_back(r[i].x0);
xs.push_back(r[i].x1);
ys.push_back(r[i].y0);
ys.push_back(r[i].y1);
}
sort(xs.begin(), xs.end());
xs.erase(unique(xs.begin(), xs.end()), xs.end());
sort(ys.begin(), ys.end());
ys.erase(unique(ys.begin(), ys.end()), ys.end());
for(int k = 0; k < 3; k++) {
for(int i = 0; i + 1 < (int)xs.size(); i++) {
for(int j = 0; j + 1 < (int)ys.size(); j++) {
if(r[k].x0 <= xs[i] && xs[i + 1] <= r[k].x1 &&
r[k].y0 <= ys[j] && ys[j + 1] <= r[k].y1) {
a[i][j] = 1;
}
}
}
}
long long aria = 0;
long long per = 0;
for(int i = 0; i + 1 < (int)xs.size(); i++) {
for(int j = 0; j + 1 < (int)ys.size(); j++) {
if(a[i][j]) {
long long dx = xs[i + 1] - xs[i];
long long dy = ys[j + 1] - ys[j];
aria += dx * dy;
if(i == 0 || !a[i - 1][j]) per += dy;
if(i + 2 == (int)xs.size() || !a[i + 1][j]) per += dy;
if(j == 0 || !a[i][j - 1]) per += dx;
if(j + 2 == (int)ys.size() || !a[i][j + 1]) per += dx;
}
}
}
fout << aria << " " << per << "\n";
return 0;
}