Pagini recente » Cod sursa (job #598296) | Cod sursa (job #433455) | Cod sursa (job #2304341) | Cod sursa (job #431015) | Cod sursa (job #1088138)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
struct dreptunghi{
long long x0,x1,y1,y0;
};
dreptunghi P[4];
long long auxx0,auxx1,auxy0,auxy1;
long long A,B;
int reuniune(long long xx0,long long yy0,long long xx1,long long 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);
for(i=1;i<=3;i++)
{
cin>>P[i].x0>>P[i].y0>>P[i].x1>>P[i].y1;
if(min(P[i].x0,P[i].x1)==P[i].x1)
{
j=P[i].x1;
P[i].x1=P[i].x0;
P[i].x0=j;
}
if(min(P[i].y0,P[i].y1)==P[i].y1)
{
j=P[i].y1;
P[i].y1=P[i].y0;
P[i].y0=j;
}
A=A+reuniune(P[i].x0,P[i].y0,P[i].x1,P[i].y1,0);
}
//fara intersectii
for(i=1;i<3;i++)
{
for(j=i+1;j<=3;j++)
{
A=A-intersectie(i,j);
}
}
//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;
}