Pagini recente » Diferente pentru utilizator/deehoroejkoli intre reviziile 120 si 121 | Diferente pentru utilizator/edgelordxd intre reviziile 6 si 7 | Monitorul de evaluare | Istoria paginii utilizator/c_ovidiu | Cod sursa (job #2247170)
#include <fstream>
#include <algorithm>
int area(int*a)
{
if(a[0]>a[2] || a[1]>a[3])return 0;
return (a[2] - a[0])*(a[3] - a[1]);
}
int peri(int*a)
{
if(a[0]>a[2] || a[1]>a[3])return 0;
return 2*((a[2] - a[0]) + (a[3] - a[1]));
}
int* sect(int*a, int*b)
{
if(a[0]>a[2] || a[1]>a[3])return a;
int *sol = new int[4];
sol[0] = std::max(a[0],b[0]);
sol[1] = std::max(a[1],b[1]);
sol[2] = std::min(a[2],b[2]);
sol[3] = std::min(a[3],b[3]);
return sol;
}
int main()
{
int *a,*b,*c;
a = new int[4];
b = new int[4];
c = new int[4];
std::fstream fin("reuniune.in",std::ios::in),
fout("reuniune.out",std::ios::out);
fin>>a[0]>>a[1]>>a[2]>>a[3];
fin>>b[0]>>b[1]>>b[2]>>b[3];
fin>>c[0]>>c[1]>>c[2]>>c[3];
int sol1 = area(a) + area(b) + area(c) -
(area(sect(a,b)) + area(sect(b,c)) + area(sect(c,a)) ) +
area(sect(a,sect(b,c)));
int sol2 = peri(a) + peri(b) + peri(c) -
(peri(sect(a,b)) + peri(sect(b,c)) + peri(sect(c,a))) +
peri(sect(a,sect(b,c)));
fout<<sol1<<' '<<sol2;
}