Pagini recente » Cod sursa (job #1967947) | Cod sursa (job #1712978) | Cod sursa (job #1186494) | Cod sursa (job #155207) | Cod sursa (job #1511365)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");
struct punct
{long long x,y;};
struct dre
{punct sj,ds;};
long arie(dre a)
{return (a.ds.y-a.sj.y)*(a.ds.x-a.sj.x);}
long perimetru(dre p)
{return 2*(p.ds.x-p.sj.x+p.ds.y-p.sj.y);}
int intersectie(dre a,dre b)
{
return !(b.sj.y>a.ds.y || b.ds.y<a.sj.y || b.sj.x>a.ds.x || b.ds.x<a.sj.y);
}
void unire(dre a,dre b,dre &c)
{if(intersectie(a,b))
{c.sj.x=max(a.sj.x,b.sj.x);
c.sj.y=max(a.sj.y,b.sj.y);
c.ds.x=min(a.ds.x,b.ds.x);
c.ds.y=min(a.ds.y,b.ds.y);}
else
{
c.sj.x=c.ds.x=c.sj.y=c.ds.y=0;
}
}
int main()
{dre a,b,c,d;
long long rez=0,per=0;
fin>>a.sj.x>>a.sj.y>>a.ds.x>>a.ds.y;
fin>>b.sj.x>>b.sj.y>>b.ds.x>>b.ds.y;
fin>>c.sj.x>>c.sj.y>>c.ds.x>>c.ds.y;
rez+=arie(a);
per+=perimetru(a);
rez+=arie(b);
per+=perimetru(b);
rez+=arie(c);
per+=perimetru(c);
unire(a,b,d);
rez-=arie(d);
per-=perimetru(d);
unire(a,c,d);
rez-=arie(d);
per-=perimetru(d);
unire(b,c,d);
rez-=arie(d);
per-=perimetru(d);
unire(a,b,d);
unire(c,d,a);
rez+=arie(a);
per+=perimetru(a);
fout<<rez<<' '<<per;
}