Cod sursa(job #3226280)

Utilizator ana_valeriaAna Valeria Duguleanu ana_valeria Data 20 aprilie 2024 19:45:56
Problema Reuniune Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <fstream>

using namespace std;
ifstream cin ("reuniune.in");
ofstream cout ("reuniune.out");
struct ura
{
    int x1, y1, x2, y2;
};
ura intsect(ura a, ura b)
{
    if (a.x2 < b.x1 || a.y2 < b.y1 || b.x2 < a.x1 || b.y2 < a.y1)
        return {0, 0, 0, 0};
    else
        return {max(a.x1, b. x1), max(a.y1, b.y1), min(a.x2, b.x2), min(a.y2, b.y2)};
}
long long periCalc(ura d)
{
    return 2 * ((d.x2 - d.x1) + (d.y2 - d.y1));
}
long long areaCalc(ura d)
{
    return (d.x2 - d.x1) * (d.y2 - d.y1);
}
int main()
{
    ura d1, d2, d3;
    cin >> d1.x1 >> d1.y1 >> d1.x2 >> d1.y2;
    cin >> d2.x1 >> d2.y1 >> d2.x2 >> d2.y2;
    cin >> d3.x1 >> d3.y1 >> d3.x2 >> d3.y2;
    ura d1_d2 = intsect(d1, d2);
    ura d1_d3 = intsect(d1, d3);
    ura d2_d3 = intsect(d2, d3);
    ura d1_d2_d3 = intsect(d1_d2, d3);
    long long area = areaCalc(d1) + areaCalc(d2) + areaCalc(d3) - areaCalc(d1_d2) - areaCalc(d1_d3) - areaCalc(d2_d3) + areaCalc(d1_d2_d3);
    long long peri = periCalc(d1) + periCalc(d2) + periCalc(d3) - periCalc(d1_d2) - periCalc(d1_d3) - periCalc(d2_d3) + periCalc(d1_d2_d3);
    cout << area << ' ' << peri;
    return 0;
}