Pagini recente » Cod sursa (job #2676229) | Cod sursa (job #385162) | Cod sursa (job #2344386) | Cod sursa (job #2534746) | Cod sursa (job #1015517)
#include <fstream>
#include <utility>
using namespace std;
#define x first
#define y second
typedef long long i64;
struct base
{
pair<i64, i64> p1;
pair<i64, i64> p2;
};
void set(base& B)
{
B.p1.x = B.p1.y = B.p2.x = B.p2.y = 0LL;
}
base intersect(const base& B1, const base& B2)
{
base now;
now.p1.x = max(B1.p1.x, B2.p1.x);
now.p1.y = max(B1.p1.y, B2.p1.y);
now.p2.x = min(B1.p2.x, B2.p2.x);
now.p2.y = min(B1.p2.y, B2.p2.y);
if (now.p1.x > now.p2.x || now.p1.y > now.p2.y) set(now);
return now;
}
i64 area(const base& B)
{
return (B.p2.x - B.p1.x) * (B.p2.y - B.p1.y);
}
i64 per(const base& B)
{
return 2LL * (B.p2.x - B.p1.x) + 2LL * (B.p2.y - B.p1.y);
}
base D1, D2, D3;
int main()
{
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");
fin >> D1.p1.x >> D1.p1.y >> D1.p2.x >> D1.p2.y;
fin >> D2.p1.x >> D2.p1.y >> D2.p2.x >> D2.p2.y;
fin >> D3.p1.x >> D3.p1.y >> D3.p2.x >> D3.p2.y;
fout << area(D1) + area(D2) + area(D3) - area(intersect(D1, D2)) - area(intersect(D1, D3)) - area(intersect(D2, D3)) + area(intersect(intersect(D1, D2), D3)) << ' ';
fout << per(D1) + per(D2) + per(D3) - per(intersect(D1, D2)) - per(intersect(D1, D3)) - per(intersect(D2, D3)) + per(intersect(intersect(D1, D2), D3));
fin.close();
fout.close();
}