Pagini recente » Monitorul de evaluare | Istoria paginii utilizator/spiridon_gabriela | Cod sursa (job #1551374) | Monitorul de evaluare | Cod sursa (job #2013220)
#include <fstream>
using namespace std;
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");
long long x0[3],y0[3],x1[3],y1[3];
long long X0,Y0,X1,Y1,S,P;
long long xx0,xx1,yy1,yy0,v1,v2;
void Comparare(long long p1,long long p2)
{X0=max(x0[p1],x0[p2]);
X1=min(x1[p1],x1[p2]);
Y0=max(y0[p1],y0[p2]);
Y1=min(y1[p1],y1[p2]);
if(X1>=X0&&Y1>=Y0){S-=(X1-X0)*(Y1-Y0);
P-=(X1-X0+Y1-Y0)*2;
xx0=X0;
xx1=X1;
yy0=Y0;
yy1=Y1;
v1=p1;v2=p2;
}
}
void Comparare2(long long p1,long long p2)
{X0=max(x0[p1],x0[p2]);
X1=min(x1[p1],x1[p2]);
Y0=max(y0[p1],y0[p2]);
Y1=min(y1[p1],y1[p2]);
if(X1>=X0&&Y1>=Y0){S+=(X1-X0)*(Y1-Y0);
P+=(X1-X0+Y1-Y0)*2;
xx0=X0;
xx1=X1;
yy0=Y0;
yy1=Y1;
v1=p1;v2=p2;
}
}
int main()
{fin>>x0[0]>>y0[0]>>x1[0]>>y1[0];
fin>>x0[1]>>y0[1]>>x1[1]>>y1[1];
fin>>x0[2]>>y0[2]>>x1[2]>>y1[2];
S+=(x1[0]-x0[0])*(y1[0]-y0[0]);
S+=(x1[1]-x0[1])*(y1[1]-y0[1]);
S+=(x1[2]-x0[2])*(y1[2]-y0[2]);
//if(x1[0]>x0[0]&&y1[0]>y0[0])
P+=(x1[0]-x0[0]+y1[0]-y0[0])*2;
//if(x1[1]>x0[1]&&y1[1]>y0[1])
P+=(x1[1]-x0[1]+y1[1]-y0[1])*2;
//if(x1[2]>x0[2]&&y1[2]>y0[2])
P+=(x1[2]-x0[2]+y1[2]-y0[2])*2;
Comparare(0,1);
Comparare(1,2);
Comparare(2,0);
if(v1==0&&v2==1){x0[0]=xx0;y0[0]=yy0;x1[0]=xx1;y1[0]=yy1;
Comparare2(0,2);
}
else if(v1==1&&v2==2){x0[1]=xx0;y0[1]=yy0;x1[1]=xx1;y1[1]=yy1;
Comparare2(1,0);
}
else if(v1==2&&v2==0){x0[2]=xx0;y0[2]=yy0;x1[2]=xx1;y1[2]=yy1;
Comparare2(2,1);
}
fout<<S<<" "<<P;
}