Cod sursa(job #2743810)

Utilizator TeodoraMaria123Serban Teodora Maria TeodoraMaria123 Data 23 aprilie 2021 15:46:43
Problema Reuniune Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <fstream>

using namespace std;
ifstream in("reuniune.in");
ofstream out("reuniune.out");
struct point
{
    int 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()
{
    int p=0,k,a=0;
    point s2,d2;
    in>>a1.x>>a1.y>>a2.x>>a2.y;
    a+=(a2.y-a1.y)*(a2.x-a1.x);
    p+=(a2.y-a1.y)+(a2.x-a1.x);
    in>>b1.x>>b1.y>>b2.x>>b2.y;
    a+=(b2.y-b1.y)*(b2.x-b1.x);
    p+=(b2.y-b1.y)+(b2.x-b1.x);
    in>>c1.x>>c1.y>>c2.x>>c2.y;
    a+=(c2.y-c1.y)*(c2.x-c1.x);
    p+=(c2.y-c1.y)+(c2.x-c1.x);
    intersectie(a1,a2,b1,b2);
    if(s.x<=d.x  &&  s.y<=d.y)
    {
        a-=(d.x-s.x)*(d.y-s.y);
        p-=(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+=(d.x-s.x)*(d.y-s.y);
        p+=(d.x-s.x)+(d.y-s.y);
    }
    intersectie(a1,a2,c1,c2);
    if(s.x<=d.x  &&  s.y<=d.y)
    {
        a-=(d.x-s.x)*(d.y-s.y);
        p-=(d.x-s.x)+(d.y-s.y);
    }
    intersectie(b1,b2,c1,c2);
    if(s.x<=d.x  &&  s.y<=d.y)
    {
        a-=(d.x-s.x)*(d.y-s.y);
        p-=(d.x-s.x)+(d.y-s.y);
    }
    out<<a<<" "<<p*2;
    return 0;
}