Pagini recente » Cod sursa (job #2463781) | Cod sursa (job #2484873) | Cod sursa (job #1621626) | Cod sursa (job #932523) | Cod sursa (job #2475018)
#include <fstream>
#include <algorithm>
#define input "reuniune.in"
#define output "reuniune.out"
using namespace std;
ifstream fin(input);
ofstream fout(output);
struct dreptunghi
{
int X1,Y1,X2,Y2;
};
dreptunghi dr[3];
long long Arie(dreptunghi a)
{
return 1LL * (a.X2 - a.X1) * (a.Y2 - a.Y1);
}
long long Perimetru(dreptunghi a)
{
return 1LL * 2 * (a.X2 - a.X1) + 1LL * 2 * (a.Y2 - a.Y1);
}
dreptunghi intersectie(dreptunghi a, dreptunghi b)
{
dreptunghi temp;
temp.X1 = max(a.X1,b.X1);
temp.Y1 = max(a.Y1,b.Y1);
temp.X2 = min(a.X2,b.X2);
temp.Y2 = min(a.Y2,b.Y2);
if(temp.X1 > temp.X2 || temp.Y1 > temp.Y2)
{
temp.X1 = temp.X2 = temp.Y1 = temp.Y2 = 0;
}
return temp;
}
int main()
{
long long A, P;
A = P = 0;
for(int i = 0 ; i < 3; i++)
{
fin >> dr[i].X1 >> dr[i].Y1 >> dr[i].X2 >> dr[i].Y2;
A += Arie(dr[i]);
P += Perimetru(dr[i]);
}
dreptunghi temp;
for(int i = 0 ; i < 2; i++)
for(int j = i + 1; j < 3; j++)
{
temp = intersectie(dr[i],dr[j]);
A -= Arie(temp);
P -= Perimetru(temp);
}
temp = intersectie(intersectie(dr[0],dr[1]),dr[2]);
A += Arie(temp);
P += Perimetru(temp);
fout << A << " " << P;
return 0;
}