Pagini recente » Cod sursa (job #947419) | Cod sursa (job #947416) | corona_day1 | Cod sursa (job #367334) | Cod sursa (job #3297105)
#include <bits/stdc++.h>
using namespace std;
struct dreptunghi
{
int x1, x2, y1, y2;
long long arie, per;
};
dreptunghi intersectie(dreptunghi d, dreptunghi e) ///calculeaza intersectia a doua dreptunghiuri
{
dreptunghi intersectie;
intersectie.x1=max(d.x1, e.x1);
intersectie.x2=min(d.x2, e.x2);
intersectie.y1=max(d.y1, e.y1);
intersectie.y2=min(d.y2, e.y2);
if(min(d.arie, e.arie)==0) ///daca una dintre arii este 0, inseamna ca intersectia va fi vida
{
intersectie.arie=0;
intersectie.per=0;
}
else if(intersectie.x1>intersectie.x2 || intersectie.y1>intersectie.y2) ///daca intersectia este vida
{
intersectie.arie=0;
intersectie.per=0;
}
else
{
intersectie.arie=(long long)(intersectie.x2-intersectie.x1)*(intersectie.y2-intersectie.y1); ///calculam aria si perimetrul
intersectie.per=(long long)2*((intersectie.x2-intersectie.x1)+(intersectie.y2-intersectie.y1));
}
return intersectie;
}
int main()
{
ifstream cin("reuniune.in");
ofstream cout("reuniune.out");
dreptunghi a, b, c;
cin >> a.x1 >> a.y1 >> a.x2 >> a.y2; ///citim cele 3 dreptunghiuri
cin >> b.x1 >> b.y1 >> b.x2 >> b.y2;
cin >> c.x1 >> c.y1 >> c.x2 >> c.y2;
///calculam ariile si perimetrele celor 3 dreptunghiuri
a.arie=(long long)(a.x2-a.x1)*(a.y2-a.y1);
a.per=(long long)2*((a.x2-a.x1)+(a.y2-a.y1));
b.arie=(long long)(b.x2-b.x1)*(b.y2-b.y1);
b.per=(long long)2*((b.x2-b.x1)+(b.y2-b.y1));
c.arie=(long long)(c.x2-c.x1)*(c.y2-c.y1);
c.per=(long long)2*((c.x2-c.x1)+(c.y2-c.y1));
dreptunghi a_b=intersectie(a, b), b_c=intersectie(b, c), c_a=intersectie(c, a); ///intersectiile dreptunghiurilor doua cate doua
dreptunghi a_b_c=intersectie(a_b, c); ///intersectia tuturor dreptunghiurilor
long long arie_reuniune, per_reuniune;
arie_reuniune=(long long)a.arie+b.arie+c.arie-a_b.arie-b_c.arie-c_a.arie+a_b_c.arie;
per_reuniune=(long long)a.per+b.per+c.per-a_b.per-b_c.per-c_a.per+a_b_c.per;
cout << arie_reuniune << " " << per_reuniune;
return 0;
}