Cod sursa(job #3328655)

Utilizator DunareTanasescu Luca-Ioan Dunare Data 9 decembrie 2025 17:02:59
Problema Reuniune Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("reuniune.in");
ofstream g("reuniune.out");
const int NMAX=100001;
struct drept
{
    long long x1, x2, y1, y2, arie, perimetru;
};
drept d1, d2, d3 ,d12, d23, d13, dtot;
void citire(drept &d)
{
    f >> d.x1 >> d.y1 >> d.x2 >> d.y2;
}
void calcul(drept &d)
{
    if(d.x1 > d.x2 || d.y1 > d.y2)
        return;
    d.arie = abs(d.x1 - d.x2) * abs(d.y1 - d.y2);
    d.perimetru = (abs(d.x1 - d.x2) + abs(d.y1 - d.y2)) * 2;
}
void inters(drept a, drept b, drept &c)
{
    c.x1 = max(a.x1, b.x1);
    c.y1 = max(a.y1, b.y1);
    c.x2 = min(a.x2, b.x2);
    c.y2 = min(a.y2, b.y2);
    calcul(c);
}
int main()
{
    citire(d1); calcul(d1);
    citire(d2); calcul(d2);
    citire(d3); calcul(d3);
    inters(d1,d2,d12);
    inters(d2,d3,d23);
    inters(d1,d3,d13);
    inters(d12,d13,dtot);
    ///includere si excludere A_tot = A_1 + A_2 + A_3 - A_12 - A_13 - A_ 23 + A_123
    g << d1.arie + d2.arie + d3.arie - d12.arie - d23.arie - d13.arie + dtot.arie << ' '<< d1.perimetru + d2.perimetru + d3.perimetru - d12.perimetru - d23.perimetru - d13.perimetru + dtot.perimetru;
    return 0;
}