Pagini recente » Cod sursa (job #884450) | Cod sursa (job #192083) | Cod sursa (job #2233932) | Cod sursa (job #1725475) | Cod sursa (job #1434729)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("reuniune.in"); ofstream g("reuniune.out");
struct drept{int x1; int y1; int x2; int y2;};
drept d[4];
void citire()
{
for(int i=1;i<=3;i++) f>>d[i].x1>>d[i].y1>>d[i].x2>>d[i].y2;
}
drept intersectie(drept a, drept b)
{ drept d;
d.x1=max(a.x1, b.x1);
d.y1=max(a.y1, b.y1);
d.x2=min(a.x2, b.x2);
d.y2=min(a.y2, b.y2);
if(d.x2<d.x1 || d.y2<d.y1) d.x1=d.x2=d.y1=d.y2=0;
return d;
}
long long arie(drept a)
{
return 1LL*(a.x2-a.x1)*(a.y2-a.y1);
}
long long perimetru(drept a)
{
return 2LL*((a.x2-a.x1)+(a.y2-a.y1));
}
int main()
{
citire();
long long a=0, p=0;
a=arie(d[1])+arie(d[2])+arie(d[3])-arie(intersectie(d[1], d[2]));
a-=arie(intersectie(d[1], d[3]))+arie(intersectie(d[2], d[3]));
a+=arie(intersectie(d[1], intersectie(d[2], d[3])));
p=perimetru(d[1])+perimetru(d[2])+perimetru(d[3])-perimetru(intersectie(d[1], d[2]));
p-=perimetru(intersectie(d[1], d[3]))+perimetru(intersectie(d[2], d[3]));
p+=perimetru(intersectie(d[1], intersectie(d[2], d[3])));
g<<a<<" "<<p<<'\n';
g.close();
return 0;
}