Pagini recente » Cod sursa (job #18641) | Cod sursa (job #1537255) | Cod sursa (job #68071) | Cod sursa (job #2043838) | Cod sursa (job #2069567)
#include<cstdio>
#include<algorithm>
using namespace std;
struct STR{
int l1,l2,c1,c2;
}nr12,nr13,nr23,nr123;
int x1[5],y1[5],x2[5],y2[5];
STR intersectie(int ind1, int ind2){
STR nr;
int a1,b1,a2,b2;
a1=max(x1[ind1], x1[ind2]);
a2=min(x2[ind1], x2[ind2]);
b1=max(y1[ind1], y1[ind2]);
b2=min(y2[ind1], y2[ind2]);
nr.l1=a1;
nr.c1=b1;
nr.l2=a2;
nr.c2=b2;
return nr;
}
bool contradictie(){
if(nr123.l1>nr123.l2)
return true;
if(nr123.c1>nr123.c2)
return true;
return false;
}
void initializare(){
nr123.c1=nr123.c2=nr123.l1=nr123.l2=0;
}
long long produs(STR nr){
long long s;
s=1LL*(nr.l2-nr.l1)*(nr.c2-nr.c1);
return s;
}
long long suma(STR nr){
long long s=0;
s=1LL*2*(nr.l2-nr.l1+nr.c2-nr.c1);
return s;
}
int main(){
freopen("reuniune.in","r",stdin);
freopen("reuniune.out","w",stdout);
long long arie=0,perimetru=0;
for(int k=1;k<=3;k++)
scanf("%d%d%d%d", &x1[k], &y1[k], &x2[k], &y2[k]);
nr12=intersectie(1, 2);
nr13=intersectie(1, 3);
nr23=intersectie(2, 3);
nr123.l1=max(x1[1], max(x1[2], x1[3]));
nr123.c1=max(y1[1], max(y1[2], y1[3]));
nr123.l2=min(x2[1], min(x2[2], x2[3]));
nr123.c2=min(y2[1], min(y2[2], y2[3]));
if(contradictie())
initializare();
for(int k=1;k<=3;k++){
arie+=1LL*(x2[k]-x1[k])*(y2[k]-y1[k]);
perimetru+=1LL*2*(x2[k]-x1[k]+y2[k]-y1[k]);
}
arie-=produs(nr12)+produs(nr13)+produs(nr23)-produs(nr123);
perimetru-=suma(nr12)+suma(nr13)+suma(nr23)-suma(nr123);
printf("%lld %lld", arie, perimetru);
return 0;
}