Pagini recente » Cod sursa (job #2245041) | Cod sursa (job #1677803) | Cod sursa (job #1618492) | Cod sursa (job #2453470) | Cod sursa (job #3304515)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");
#define int long long
struct Iris {
int x1, y1, x2, y2;
bool ePosibil() { return x1 <= x2 && y1 <= y2; }
int getPerimetru() { return 2 * (x2 - x1) + 2 * (y2 - y1); }
int getArie() { return (x2 - x1) * (y2 - y1); }
}p1, p2, p3;
inline Iris reuniune(Iris a, Iris b) {
Iris rez;
rez.x1 = max(a.x1, b.x1);
rez.y1 = max(a.y1, b.y1);
rez.x2 = min(a.x2, b.x2);
rez.y2 = min(a.y2, b.y2);
if(!rez.ePosibil()) rez = {0, 0, 0, 0};
return rez;
}
signed main()
{
fin >> p1.x1 >> p1.y2 >> p1.x2 >> p1.y1;
if(p1.x2 < p1.x1) swap(p1.x1, p1.x2);
if(p1.y2 < p1.y1) swap(p1.y1, p1.y2);
fin >> p2.x1 >> p2.y2 >> p2.x2 >> p2.y1;
if(p2.x2 < p2.x1) swap(p2.x1, p2.x2);
if(p2.y2 < p2.y1) swap(p2.y1, p2.y2);
fin >> p3.x1 >> p3.y2 >> p3.x2 >> p3.y1;
if(p3.x2 < p3.x1) swap(p3.x1, p3.x2);
if(p3.y2 < p3.y1) swap(p3.y1, p3.y2);
fout << p1.getArie() + p2.getArie() + p3.getArie() - reuniune(p1, p2).getArie() - reuniune(p1, p3).getArie() - reuniune(p2, p3).getArie() + reuniune(p1, reuniune(p2, p3)).getArie() << " ";
fout << p1.getPerimetru() + p2.getPerimetru() + p3.getPerimetru() - reuniune(p1, p2).getPerimetru() - reuniune(p1, p3).getPerimetru() - reuniune(p2, p3).getPerimetru() + reuniune(p1, reuniune(p2, p3)).getPerimetru();
return 0;
}