Mai intai trebuie sa te autentifici.
Cod sursa(job #2247171)
Utilizator | Data | 27 septembrie 2018 22:54:56 | |
---|---|---|---|
Problema | Reuniune | Scor | 20 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.18 kb |
#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;
if(b[0]>b[2] || b[1]>b[3])return b;
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;
}