Cod sursa(job #1827159)

Utilizator Mircea_DonciuDonciu Mircea Mircea_Donciu Data 11 decembrie 2016 15:22:21
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <cstring>
#include <fstream>
#include <algorithm>
using namespace std;
struct str
{
    int x1,x2,y1,y2;
    long long A()
    {
        return 1LL*(x2-x1)*(y2-y1);
    }
    long long P()
    {
        return 2LL*(x2-x1)+2LL*(y2-y1);
    }
    str operator*(const str& R)const
    {
        str aux;
        aux.x1=max(x1,R.x1);
        aux.x2=min(x2,R.x2);
        aux.y1=max(y1,R.y1);
        aux.y2=min(y2,R.y2);
        if(aux.x1>aux.x2 || aux.y1>aux.y2)
            aux.x1=aux.x2=aux.y1=aux.y2=0;
        return aux;
    }
};
str a,b,c,d,e,x,y;
long long sum,per;
int main()
{
    ifstream f("reuniune.in");
    ofstream g("reuniune.out");
    f>>a.x1>>a.y1>>a.x2>>a.y2>>b.x1>>b.y1>>b.x2>>b.y2>>c.x1>>c.y1>>c.x2>>c.y2;
    d=a*b;
    e=c*a;
    x=b*c;
    y=c*b*a;
    sum=a.A()+b.A()+c.A()-d.A()-e.A()-x.A()+y.A();
    per=a.P()+b.P()+c.P()-d.P()-e.P()-x.P()+y.P();
    g<<sum<<" "<<per<<'\n';
    return 0;
}