Pagini recente » Cod sursa (job #515603) | Cod sursa (job #2490978) | Cod sursa (job #1237077) | Cod sursa (job #5365) | Cod sursa (job #1088106)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
int x10,y10,x20,y20,x30,y30;
int x11,y11,x21,y21,x31,y31;
struct dreptunghi{
int x0,x1,y1,y0;
};
dreptunghi P[4];
long long auxx0,auxx1,auxy0,auxy1;
long long A,B;
int reuniune(int xx0,int yy0,int xx1,int yy1,int ok)
{
long long dif,fid;
dif=xx0-xx1;
if(dif<0) dif=dif*(-1);
fid=yy0-yy1;
if(fid<0) fid=fid*(-1);
if(dif!=0 && fid!=0)
{
if(ok==0)
B=B+dif*2+fid*2;
else B=B-dif*2-fid*2;
}
else
{
if(ok==0)
B=B+dif+fid;
else B=B-dif-fid;
}
return dif*fid;
}
int intersectie(int i, int j)
{
if(P[i].x0<P[j].x0)
auxx0=P[j].x0;
else auxx0=P[i].x0;
if(P[i].y0<P[j].y0)
auxy0=P[j].y0;
else auxy0=P[i].y0;
if(P[i].x1<P[j].x1)
auxx1=P[i].x1;
else auxx1=P[j].x1;
if(P[i].y1<P[j].y1)
auxy1=P[i].y1;
else auxy1=P[j].y1;
if(auxx0<auxx1 && auxy0<auxy1)
return reuniune(auxx0,auxy0,auxx1,auxy1,1);
else return 0;
}
int main()
{
int i,j;
freopen("reuniune.in","r",stdin);
freopen("reuniune.out","w",stdout);
cin>>P[1].x0>>P[1].y0>>P[1].x1>>P[1].y1;
cin>>P[2].x0>>P[2].y0>>P[2].x1>>P[2].y1;
cin>>P[3].x0>>P[3].y0>>P[3].x1>>P[3].y1;
for(i=1;i<=3;i++)
{
A=A+reuniune(P[i].x0,P[i].y0,P[i].x1,P[i].y1,0);
}
//aria fara intersectii
for(i=1;i<3;i++)
{
for(j=i+1;j<=3;j++)
{
A=A-intersectie(i,j);
}
}
//aria fara intersectia la 3
for(i=1;i<=3;i++)
{
if(P[i].x0>auxx0)
auxx0=P[i].x0;
if(P[i].y0>auxy0)
auxy0=P[i].y0;
if(P[i].x1<auxx1)
auxx1=P[i].x1;
if(P[i].y1<auxy1)
auxy1=P[i].y1;
}
if(auxx0<auxx1 && auxy0<auxy1)
{
A=A+reuniune(auxx0,auxy0,auxx1,auxy1,0);
}
cout<<A<<" "<<B;
cout<<"\n";
return 0;
}