Pagini recente » Cod sursa (job #573075) | Cod sursa (job #2150673) | Profil dornescuvlad | Cod sursa (job #2284993) | Cod sursa (job #2286795)
#include <fstream>
#define input "reuniune.in"
#define output "reuniune.out"
using namespace std;
ifstream in(input);
ofstream out(output);
struct punct
{
int x, y;
};
struct dreptunghi
{
punct st_jos, dr_sus;
};
long long abs(long long a)
{
return a < 0 ? -a : a;
}
dreptunghi A, B, C;
bool Nu_Int(dreptunghi A, dreptunghi B)
{
if(B.st_jos.x > A.dr_sus.x || B.st_jos.y > A.dr_sus.y || B.dr_sus.x < A.st_jos.x || B.dr_sus.y < A.st_jos.y) return true;
return false;
}
void Read_Data()
{
// Dreptunghi A
in >> A.st_jos.x >> A.st_jos.y >> A.dr_sus.x >> A.dr_sus.y;
// Dreptunghi B
in >> B.st_jos.x >> B.st_jos.y >> B.dr_sus.x >> B.dr_sus.y;
// Dreptunghi C
in >> C.st_jos.x >> C.st_jos.y >> C.dr_sus.x >> C.dr_sus.y;
}
dreptunghi Intersectie(dreptunghi A, dreptunghi B)
{
dreptunghi Nou = {0, 0, 0, 0};
if(!Nu_Int(A, B))
{
Nou.st_jos.x = max(A.st_jos.x, B.st_jos.x);
Nou.st_jos.y = max(A.st_jos.y, B.st_jos.y);
Nou.dr_sus.x = min(A.dr_sus.x, B.dr_sus.x);
Nou.dr_sus.y = min(A.dr_sus.y, B.dr_sus.y);
}
return Nou;
}
long long Area(dreptunghi A)
{
return (long long)abs(A.dr_sus.x - A.st_jos.x) * abs(A.dr_sus.y - A.st_jos.y);
}
long long Perimeter(dreptunghi A)
{
return (long long)2*(abs(A.dr_sus.x - A.st_jos.x) + abs(A.dr_sus.y - A.st_jos.y));
}
void Solve()
{
dreptunghi AB = Intersectie(A, B), BC = Intersectie(B, C), AC = Intersectie(A, C), ABC = Intersectie(A, BC);
long long arie = (long long)Area(A) + Area(B) + Area(C) - Area(AB) - Area(BC) - Area(AC) + Area(ABC);
long long perimetru = (long long)Perimeter(A) + Perimeter(B) + Perimeter(C) - Perimeter(AB) - Perimeter(BC) - Perimeter(AC) + Perimeter(ABC);
out << arie << " " << perimetru << "\n";
}
int main()
{
Read_Data();
Solve();
return 0;
}