Cod sursa(job #2743820)

Utilizator TeodoraMaria123Serban Teodora Maria TeodoraMaria123 Data 23 aprilie 2021 15:59:39
Problema Reuniune Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.39 kb
#include <fstream>

using namespace std;
ifstream in("reuniune.in");
ofstream out("reuniune.out");
struct point
{
    long long x,y;
}a1,a2,b1,b2,c1,c2;
point s,d;
void intersectie(point p1,point p2,point m1,point m2)
{
    s.y=max(p1.y,m1.y);
    s.x=max(p1.x,m1.x);
    d.y=min(p2.y,m2.y);
    d.x=min(p2.x,m2.x);
}
int main()
{
    long long p=0,a=0;
    point s2,d2;
    in>>a1.x>>a1.y>>a2.x>>a2.y;
    a+=1ll*((a2.y-a1.y)*(a2.x-a1.x));
    p+=1ll*((a2.y-a1.y)+(a2.x-a1.x));
    in>>b1.x>>b1.y>>b2.x>>b2.y;
    a+=1ll*((b2.y-b1.y)*(b2.x-b1.x));
    p+=1ll*((b2.y-b1.y)+(b2.x-b1.x));
    in>>c1.x>>c1.y>>c2.x>>c2.y;
    a+=1ll*((c2.y-c1.y)*(c2.x-c1.x));
    p+=1ll*((c2.y-c1.y)+(c2.x-c1.x));
    intersectie(a1,a2,b1,b2);
    if(s.x<=d.x  &&  s.y<=d.y)
    {
        a-=1ll*((d.x-s.x)*(d.y-s.y));
        p-=1ll*((d.x-s.x)+(d.y-s.y));
    }
    s2=s;
    d2=d;
    intersectie(s2,d2,c1,c2);
    if(s.x<=d.x  &&  s.y<=d.y)
    {
        a+=1ll*((d.x-s.x)*(d.y-s.y));
        p+=1ll*((d.x-s.x)+(d.y-s.y));
    }
    intersectie(a1,a2,c1,c2);
    if(s.x<=d.x  &&  s.y<=d.y)
    {
        a-=1ll*((d.x-s.x)*(d.y-s.y));
        p-=1ll*((d.x-s.x)+(d.y-s.y));
    }
    intersectie(b1,b2,c1,c2);
    if(s.x<=d.x  &&  s.y<=d.y)
    {
        a-=1ll*((d.x-s.x)*(d.y-s.y));
        p-=1ll*((d.x-s.x)+(d.y-s.y));
    }
    p*=1ll*2;
    out<<a<<" "<<p;
    return 0;
}