Cod sursa(job #3245839)

Utilizator 0021592Grecu rares 0021592 Data 30 septembrie 2024 20:28:31
Problema Reuniune Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <fstream>
#define int long long
using namespace std;
ifstream in("reuniune.in");
ofstream out("reuniune.out");
struct cutie
{
    int firstx, secondx, firsty, secondy;
} a[16], h;
int arie(cutie a)
{
    return (a.secondx - a.firstx) * (a.secondy - a.firsty);
}
int i, j, n, best;
cutie intersectie(cutie a, cutie b)
{
    ///if (b.firstx > a.secondx || a.firstx > b.secondx || b.firsty > a.secondy || a.firsty > b.secondy)
    a = {max(a.firstx, b.firstx), min(a.secondx, b.secondx), max(a.firsty, b.firsty), min(a.secondy, b.secondy)};
    if (a.firstx > a.secondx || a.firsty > a.secondy)
        a = {0,0,0,0};
    return a;
}
int perim(cutie a)
{
    return 2 * (a.secondx-a.firstx) + 2*(a.secondy - a.firsty);
}
int32_t main()
{
    a[0].firstx = a[0].firsty = -1e9;
    a[0].secondx = a[0].secondy = 1e9;
    for (i = 1; i <= 3; i++)
        in >> a[i].firstx >> a[i].firsty >> a[i].secondx >> a[i].secondy;
    a[4] = intersectie(a[1], a[2]);
    a[5] = intersectie(a[2], a[3]);
    a[6] = intersectie(a[1], a[3]);
    a[7] = intersectie(a[4], a[3]);
    out << arie(a[1]) + arie(a[2]) + arie(a[3]) - arie(a[4]) - arie(a[5]) - arie(a[6]) + arie(a[7]) << ' ';
    out << perim(a[1]) + perim(a[2]) + perim(a[3]) - perim(a[4]) - perim(a[5]) - perim(a[6]) + perim(a[7]) << ' ';
    return 0;
}