Cod sursa(job #2748404)

Utilizator MateGMGozner Mate MateGM Data 30 aprilie 2021 15:38:38
Problema Reuniune Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <iostream>
#include <fstream>

using namespace std;

struct p{
    int x0,y0,x1,y1;
};

long long ter(p const &d)
{
    return 1ll*(d.x1-d.x0)*(d.y1-d.y0);
}

long long ker(p const &d)
{
    return 2ll*(d.x1-d.x0)+2ll*(d.y1-d.y0);
}

p intersect(const p &d1,const p &d2)
{
    p d;
    d.x0=max(d1.x0,d2.x0);
    d.x1=min(d1.x1,d2.x1);
    d.y0=max(d1.y0,d2.y0);
    d.y1=min(d1.y1,d2.y1);
    if(d.x0>d.x1 || d.y0 >d.y1)
    {
        d.x0=d.x1=0;
        d.y0=d.y1=0;
    }
    return d;
}

int main()
{
    ifstream be("reuniune.in");
    ofstream ki("reuniune.out");
    p v[4],d;
    long long t=0,k=0;
    for(int i=0;i<3;i++){
        be>>v[i].x0>>v[i].y0>>v[i].x1>>v[i].y1;
        t+=ter(v[i]);
        k+=ker(v[i]);
    }
    for(int i=0;i<2;i++)
        for(int j=i+1;j<3;j++)
        {
            d=intersect(v[i],v[j]);
            t-=ter(d);
            k-=ker(d);
        }
    d=intersect(intersect(v[0],v[1]),v[2]);
    t+=ter(d);
    k+=ker(d);
    ki<<t<<" "<<k<<endl;

    return 0;
}