Cod sursa(job #2763985)

Utilizator betybety bety bety Data 18 iulie 2021 14:32:30
Problema Reuniune Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("reuniune.in");
ofstream out("reuniune.out");
typedef long long ll;
struct rect
{
    ll x1;
    ll y1;
    ll x2;
    ll y2;
    void init()
    {
        in>>x1>>y1;
        in>>x2>>y2;
    }
    ll area()
    {
        return (x2-x1)*(y2-y1);
    }
    ll perm()
    {
        return 2*(x2-x1+y2-y1);
    }
}v[3];
rect unite(rect a,rect b)
{
    rect u;
    u.x1=max(a.x1,b.x1);
    u.x2=min(a.x2,b.x2);
    u.y1=max(a.y1,b.y1);
    u.y2=min(a.y2,b.y2);
    if(u.x1>u.x2 or u.y1>u.y2)
        u={0,0,0,0};
    return u;
}
ll area,perm;
int main()
{
    for(ll i=0;i<3;++i)
    {
        v[i].init();
        area+=v[i].area();
        perm+=v[i].perm();
    }
    for(ll i=0;i<2;++i)
    for(ll j=i+1;j<3;++j)
    {
        rect u=unite(v[i],v[j]);
        area-=u.area();
        perm-=u.perm();
    }
    rect u=unite(unite(v[0],v[1]),v[2]);
    area+=u.area();
    perm+=u.perm();
    out<<area<<' '<<perm<<'\n';
    return 0;
}