Pagini recente » Cod sursa (job #361359) | Cod sursa (job #1547291) | Cod sursa (job #637578) | Cod sursa (job #2227065) | Cod sursa (job #1934950)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream in("reuniune.in");
ofstream out("reuniune.out");
struct my{
ll a1, a2, b1, b2;
};
my A, B, C; ll area, peri;
ll getb(my x){
return 2 * (x.b2 - x.b1 + x.a2 - x.a1);
}
ll geta(my x){
return (x.b2 - x.b1) * (x.a2 - x.a1);
}
my cross(my x, my y){
my p;
p.b2 = min(x.b2, y.b2);
p.b1 = max(x.b1, y.b1);
p.a2 = min(x.a2, y.a2);
p.a1 = max(x.a1, y.a1);
if(p.a1 > p.a2 || p.b1 > p.b2)
p.a1 = p.a2 = p.b1 = p.b2 = 0;
return p;
}
int main(){
in >> A.a1 >> A.b1 >> A.a2 >> A.b2;
in >> B.a1 >> B.b1 >> B.a2 >> B.b2;
in >> C.a1 >> C.b1 >> C.a2 >> C.b2;
area = geta(A) + geta(B) + geta(C) - geta(cross(A, B)) - geta(cross(A, C)) - geta(cross(B, C)) + geta(cross(A, cross(B, C)));
peri = getb(A) + getb(B) + getb(C) - getb(cross(A, B)) - getb(cross(A, C)) - getb(cross(B, C)) + getb(cross(A, cross(B, C)));
out << area << ' ' << peri;
return 0;
}