Pagini recente » Cod sursa (job #1556008) | Cod sursa (job #3154465) | Cod sursa (job #2731338) | Cod sursa (job #828720) | Cod sursa (job #2196390)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("reuniune.in");
ofstream g ("reuniune.out");
struct drept
{
int x0;
int x1;
int y0;
int y1;
} v[4];
long long int A, P;
inline long long int arie (int i)
{
long long a = 1LL * (v[i].x1 - v[i].x0) * (v[i].y1 - v[i].y0);
return a;
}
inline long long int perimetru (int i)
{
long long p = 2LL * (v[i].x1 + v[i].y1 - v[i].x0 - v[i].y0);
return p;
}
int intersectie (int i, int j)
{
v[0].x0 = max (v[i].x0, v[j].x0), v[0].x1 = min (v[i].x1, v[j].x1);
if (v[0].x0 >= v[0].x1)
return 0;
v[0].y0 = max (v[i].y0, v[j].y0), v[0].y1 = min (v[i].y1, v[j].y1);
if (v[0].y0 >= v[0].y1)
return 0;
return 1;
}
int main()
{
f >> v[1].x0 >> v[1].y0 >> v[1].x1 >> v[1].y1;
f >> v[2].x0 >> v[2].y0 >> v[2].x1 >> v[2].y1;
f >> v[3].x0 >> v[3].y0 >> v[3].x1 >> v[3].y1;
A += arie (1) + arie (2) + arie (3);
P += perimetru (1) + perimetru (2) + perimetru (3);
A -= intersectie (1, 2) * arie (0)+intersectie (1, 3) * arie (0)+intersectie (2, 3) * arie (0);
A += intersectie (0, 1) * arie (0);
P -= intersectie (1, 2) * perimetru (0)+intersectie (1, 3) * perimetru (0)+intersectie (2, 3) * perimetru (0);
P += intersectie (0, 1) * perimetru (0);
g << A << ' ' << P;
return 0;
}