Cod sursa(job #3322334)

Utilizator MilitaruMihaiMihaiMIlitaru MilitaruMihai Data 13 noiembrie 2025 15:24:31
Problema Reuniune Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.39 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");
struct rectanglu{
    long long x1,y1,x2,y2;
}r[3];
rectanglu in(rectanglu r1, rectanglu r2)
{
    rectanglu in;
    in.x1 = max (r1.x1 ,r2.x1);
    in.y1 = max (r1.y1 ,r2.y1);
    in.x2 = min (r1.x2 ,r2.x2);
    in.y2 = min (r1.y2 ,r2.y2);
    if(in.x1 <= in.x2 && in.y1 <= in.y2)
        return in;
    return {0,0,0,0};
}
long long arie (rectanglu r1)
{
    return (r1.x2 - r1.x1) * (r1.y2 - r1.y1);
}
long long perimetru (rectanglu r1)
{
    return 2 * (r1.x2 - r1.x1) + 2 * (r1.y2 - r1.y1);
}
int main()
{
    for (int i = 0; i < 3 ; ++i)
        fin >> r[i].x1 >> r[i].y1 >> r[i].x2 >> r[i].y2;

        cout << r[0].x1 << r[0].y1 << r[0].x2 << r[0].y2 <<'\n';

    rectanglu in1 = in(r[0], r[1]), in2 = in(r[1], r[2]), in3 = in(r[0],r[2]);
    rectanglu in4 = in(in1, r[2]);

    cout << in1.x1 << ' ' << in1.y1 << ' ' << in1.x2 << ' '<< in1.y2 <<'\n';
    cout << in2.x1 << ' ' << in2.y1 << ' ' << in2.x2 << ' '<< in2.y2 <<'\n';
    cout << in3.x1 << ' ' << in3.y1 << ' ' << in3.x2 << ' '<< in3.y2 <<'\n';

    fout << arie(r[0]) + arie(r[1]) + arie(r[2]) - arie(in1) - arie(in2) - arie(in3) + arie(in4) <<' ';
    fout << perimetru(r[0]) + perimetru(r[1]) + perimetru(r[2]) - perimetru(in1) - perimetru(in2) - perimetru(in3) + perimetru(in4) <<'\n';

    return 0;
}