Pagini recente » Cod sursa (job #847475) | Cod sursa (job #639927) | Cod sursa (job #1240581) | Cod sursa (job #2335449) | Cod sursa (job #575366)
Cod sursa(job #575366)
#include <fstream>
using namespace std;
const char InFile[]="reuniune.in";
const char OutFile[]="reuniune.out";
ifstream fin(InFile);
ofstream fout(OutFile);
struct s_AABB
{
long long xmin,xmax,ymin,ymax;
};
long long a,p;
s_AABB A,B,C;
inline s_AABB intersectie(s_AABB a, s_AABB b)
{
s_AABB c;
c.xmin=max(a.xmin,b.xmin);
c.xmax=min(a.xmax,b.xmax);
c.ymin=max(a.ymin,b.ymin);
c.ymax=min(a.ymax,b.ymax);
return c;
}
inline long long arie(s_AABB a)
{
if(a.xmin<=a.xmax && a.ymin<=a.ymax)
{
return (a.xmax-a.xmin)*(a.ymax-a.ymin);
}
return 0;
}
inline long long perimetru(s_AABB a)
{
if(a.xmin<=a.xmax && a.ymin<=a.ymax)
{
return (((a.xmax-a.xmin)+(a.ymax-a.ymin))<<1);
}
return 0;
}
int main()
{
fin>>A.xmin>>A.ymin>>A.xmax>>A.ymax;
fin>>B.xmin>>B.ymin>>B.xmax>>B.ymax;
fin>>C.xmin>>C.ymin>>C.xmax>>C.ymax;
fin.close();
a=arie(A)+arie(B)+arie(C)
-arie(intersectie(A,B))
-arie(intersectie(B,C))
-arie(intersectie(C,A))
+arie(intersectie(intersectie(A,B),C));
p=perimetru(A)+perimetru(B)+perimetru(C)
-perimetru(intersectie(A,B))
-perimetru(intersectie(B,C))
-perimetru(intersectie(C,A))
+perimetru(intersectie(intersectie(A,B),C));
fout<<a<<" "<<p;
fout.close();
return 0;
}