Pagini recente » Cod sursa (job #1439983) | Cod sursa (job #1700408) | Cod sursa (job #2352924) | Cod sursa (job #867140) | Cod sursa (job #2435300)
#include <iostream>
#include <fstream>
using namespace std;
struct drept{
int x1, y1, x2, y2;
drept(int a, int b, int c, int d)
{
x1=a;
y1=b;
x2=c;
y2=d;
}
drept()
{
x1=x2=y1=y2=0;
}
}d[4];
ifstream f("reuniune.in");
ofstream g("reuniune.out");
long long rez_arie, rez_perimetru;
drept reun(drept a, drept b)
{
drept nou;
nou.x1=max(a.x1,b.x1);
nou.y1=max(a.y1,b.y1);
nou.x2=min(a.x2,b.x2);
nou.y2=min(a.y2,b.y2);
if (nou.x2<=nou.x1 || nou.y2<=nou.y1)
return {0,0,0,0};
return nou;
}
int main()
{
for (int i=1; i<=3; ++i)
{
f >> d[i].x1 >> d[i].y1 >> d[i].x2 >> d[i].y2;
rez_arie+=(d[i].x2-d[i].x1)*(d[i].y2-d[i].y1);
rez_perimetru+=2*(d[i].x2-d[i].x1)+2*(d[i].y2-d[i].y1);
}
for (int i=1; i<=3; ++i)
{
for (int j=i+1; j<=3; ++j)
{
drept reuniune=reun(d[i],d[j]);
rez_arie-=(reuniune.x2-reuniune.x1)*(reuniune.y2-reuniune.y1);
rez_perimetru-=(2*(reuniune.x2-reuniune.x1)+2*(reuniune.y2-reuniune.y1));
}
}
drept reuniune=reun(d[1],d[2]);
drept alta=reun(reuniune,d[3]);
rez_arie+=(alta.x2-alta.x1)*(alta.y2-alta.y1);
rez_perimetru+=(2*(alta.x2-alta.x1)+2*(alta.y2-alta.y1));
g << rez_arie <<' ' << rez_perimetru;
return 0;
}