Pagini recente » Cod sursa (job #326619) | Cod sursa (job #406867) | Cod sursa (job #40032) | Cod sursa (job #1829576) | Cod sursa (job #2479636)
#include <fstream>
#include <cmath>
using namespace std;
ifstream cin("reuniune.in");
ofstream cout("reuniune.out");
//int x1, y1, x2, y2;
struct dreptunghi{
long long x, y, x2, y2;
long long arie(){
return 1LL * (x2 - x) * (y2 - y);
}
long long per() {
return ((x2 - x) + (y2 - y)) * 2LL;
}
};
bool isOK(long long x, long long y, dreptunghi a) {
return x >= a.x && x <= a.x2 && y >= a.y && y <= a.y2;
}
dreptunghi dr1, dr2, dr3, dr12, dr13, dr23, dr123;
dreptunghi seIntersecteaza(dreptunghi a, dreptunghi b) {
dreptunghi dr = {0, 0, 0, 0};
int maxx1, maxx2, min1, min2;
maxx1 = max(a.x, b.x);
maxx2 = max(a.y, b.y);
min1 = min(a.x2, b.x2);
min2 = min(a.y2, b.y2);
if (maxx1 <= min1 && maxx2 <= min2)
{
dr = {maxx1, maxx2, min1, min2};
}
return dr;
}
int main() {
cin >> dr1.x >> dr1.y >> dr1.x2 >> dr1.y2;
cin >> dr2.x >> dr2.y >> dr2.x2 >> dr2.y2;
cin >> dr3.x >> dr3.y >> dr3.x2 >> dr3.y2;
dr12 = seIntersecteaza(dr1, dr2);
dr123 = seIntersecteaza(dr12, dr3);
dr23 = seIntersecteaza(dr2, dr3);
dr13 = seIntersecteaza(dr1, dr3);
long long arie = dr1.arie() + dr2.arie() + dr3.arie() - dr12.arie() - dr13.arie() - dr23.arie() + dr123.arie();
long long perimetru = dr1.per() + dr2.per() + dr3.per() - dr12.per() - dr23.per() - dr13.per() + dr123.per();
cout << arie << " " << perimetru;
return 0;
}