Pagini recente » Cod sursa (job #546174) | Cod sursa (job #3131352) | Cod sursa (job #690404) | Cod sursa (job #1944571) | Cod sursa (job #2531400)
#include <fstream>
using namespace std;
struct punct
{
long long x, y, z, t;
};
/*
Ideea este sa aplicam PINEX pe ariile si perimetrele lor
Avem si o functie care gaseste dreptunghiul-intersectie
Inline ajuta PUTIN la viteza
*/
ifstream cin("reuniune.in");
ofstream cout("reuniune.out");
punct a, b, c;
inline punct intersect(punct a, punct b) // aflam intersectia a doua dreptunghiuri
{
punct r;
r.x = max(a.x, b.x);
r.y = max(a.y, b.y);
r.z = min(a.z, b.z);
r.t = min(a.t, b.t);
if(r.x > r.z || r.y > r.t)
r.x = r.y = r.z = r.t = 0;
return r;
return r;
}
inline long long arie(punct a) // pentru arie
{
return (a.z - a.x) * (a.t - a.y);
}
inline long long perimetru(punct a) // perimetru
{
return (a.z - a.x + a.t - a.y) << 1;
}
void citire()
{
cin >> a.x >> a.y >> a.z >> a.t >>
b.x >> b.y >> b.z >> b.t >> c.x >> c.y >> c.z >> c.t;
}
void print() // printare folosind PINEX
{
cout << arie(a) + arie(b) + arie(c) - arie(intersect(a,b))
- arie(intersect(b,c)) - arie(intersect(a,c)) +
arie(intersect( intersect(a, c), b)) << ' ';
cout << perimetru(a) + perimetru(b) + perimetru(c)
- perimetru(intersect(a,b))- perimetru(intersect(b,c))
- perimetru(intersect(a,c)) + perimetru(intersect( intersect(a, c), b));
}
int main()
{
citire();
print();
return 0;
}