Pagini recente » Monitorul de evaluare | Cod sursa (job #3325036) | Cod sursa (job #2603381) | Cod sursa (job #3327890) | Cod sursa (job #3357837)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("reuniune.in");
ofstream g("reuniune.out");
long long d[4][5],s,p;
int pery(int d1, int d2)
{
if(d[d1][2]>=d[d2][2]) swap(d1,d2);
if(d[d1][4]<=d[d2][2]) return 0;
return -d[d2][2]+min(d[d1][4],d[d2][4]);
}
int perx(int d1, int d2)
{
if(d[d1][1]>=d[d2][1]) swap(d1,d2);
if(d[d1][3]<=d[d2][1]) return 0;
return -d[d2][1]+min(d[d1][3],d[d2][3]);
}
int main()
{
for(int i=1;i<=3;i++)
{
for(int j=1;j<=4;j++)
f>>d[i][j];
s+=(d[i][3]-d[i][1])*(d[i][4]-d[i][2]);
p+=2*((d[i][3]-d[i][1])+(d[i][4]-d[i][2]));
}
s-=pery(1,2)*perx(1,2);
p-=(pery(1,2)+perx(1,2))*2;
s-=pery(2,3)*perx(2,3);
p-=(pery(2,3)+perx(2,3))*2;
s-=pery(1,3)*perx(1,3);
p-=(pery(1,3)+perx(1,3))*2;
long long m1,m2,x;
m1=max(max(d[1][1],d[2][1]),d[3][1]);
m2=min(min(d[1][3],d[2][3]),d[3][3]);
if(m1<m2)
{
x=m2-m1;
m1=max(max(d[1][2],d[2][2]),d[3][2]);
m2=min(min(d[1][4],d[2][4]),d[3][4]);
if(m1<m2)
{s+=(m2-m1)*x;
p+=2*(m2-m1)+2*x;
}
}
g<<s<<' '<<p;
return 0;
}