Pagini recente » Cod sursa (job #731804) | Cod sursa (job #451001) | Cod sursa (job #156199) | Cod sursa (job #1514027) | Cod sursa (job #2450519)
#include <bits/stdc++.h>
using namespace std;
///
typedef long long ll;
struct Rectangle{
ll x1, x2, y1, y2;
ll width, height;
void cn();
};
///
Rectangle r1, r2, r3, r12, r23, r13, r123;
ll perimeter, area;
///
void read();
void solve();
void write();
Rectangle unite(Rectangle ra, Rectangle rb);
///
int main()
{
read();
solve();
write();
return 0;
}
void read(){
freopen("reuniune.in", "r", stdin);
r1.cn(); r2.cn(); r3.cn();
fclose(stdin);
}
void solve(){
area=perimeter=0LL;
r12=unite(r1, r2);
r13=unite(r1, r3);
r23=unite(r2, r3);
r123=unite(r12, r3);
area+=r1.height*r1.width+r2.height*r2.width+r3.height*r3.width;
perimeter+=2*(r1.height+r1.width+r2.height+r2.width+r3.height+r3.width);
area=area-r12.height*r12.width-r13.width*r13.height-r23.width*r23.height;
perimeter=perimeter-2*(r12.width+r12.height+r13.width+r13.height+r23.width+r23.height);
if(!r12.width && r12.height>0) perimeter=perimeter-r12.height;
if(r12.width>0 && !r12.height) perimeter=perimeter-r12.width;
if(!r13.width && r13.height>0) perimeter=perimeter-r13.height;
if(r13.width>0 && !r13.height) perimeter=perimeter-r13.width;
if(!r23.width && r23.height>0) perimeter=perimeter-r23.height;
if(r23.width>0 && !r23.height) perimeter=perimeter-r23.width;
area+=r123.height*r123.height;
perimeter+=2*(r123.height+r123.width);
}
void write(){
freopen("reuniune.out", "w", stdout);
printf("%lld %lld", area, perimeter);
fclose(stdout);
}
void Rectangle::cn(){
scanf("%lld%lld%lld%lld", &x1, &y1, &x2, &y2);
width=x2-x1;
height=y2-y1;
}
Rectangle unite(Rectangle ra, Rectangle rb){
Rectangle r;
r.x1=max(ra.x1, rb.x1);
r.x2=min(ra.x2, rb.x2);
r.y1=max(ra.y1, rb.y1);
r.y2=min(ra.y2, rb.y2);
r.height=r.y2-r.y1;
r.width=r.x2-r.x1;
return r;
}