Cod sursa(job #1668135)

Utilizator NightSilentIridon Stefan NightSilent Data 29 martie 2016 16:22:39
Problema Reuniune Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.61 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("reuniune.in");
ofstream g("reuniune.out");
struct punct
{
    int x,y;
};
void inter(punct p1,punct p2,punct q1,punct q2,punct &r1,punct &r2)
{
    r1.x=max(p1.x,q1.x);
    r1.y=max(p1.y,q1.y);
    r2.x=min(p2.x,q2.x);
    r2.y=min(p2.y,q2.y);
}
int ver(punct r1,punct r2)
{
    if (r1.x>r2.x)
        return 0;
    if (r1.y>r2.y)
        return 0;
    return 1;
}
int arie(punct p1,punct p2)
{
    int l1,l2;
    l1=p2.y-p1.y;
    l2=p2.x-p1.x;
    return l1*l2;
}
int perimetru(punct p1,punct p2)
{
    int l1,l2;
    l1=p2.y-p1.y;
    l2=p2.x-p1.x;
    return(2*(l1+l2));
}
int main()
{
    long long s1=0,s2=0,s3=0,s4=0,p1=0,p2=0,p3=0,p4=0;
    punct a1,a2,b1,b2,c1,c2,r1,r2,r3,r4;
    f>>a1.x>>a1.y>>a2.x>>a2.y;
    f>>b1.x>>b1.y>>b2.x>>b2.y;
    f>>c1.x>>c1.y>>c2.x>>c2.y;
    inter(a1,a2,b1,b2,r1,r2);
    if (ver(r1,r2))
        {
            s1=arie(r1,r2);
            p1=perimetru(r1,r2);
            inter(r1,r2,c1,c2,r1,r2);
            if (ver(r1,r2))
                {
                    s4=arie(r1,r2);
                    p4=perimetru(r1,r2);
                }
        }
    inter(a1,a2,c1,c2,r1,r2);
    if(ver(r1,r2))
        {
            s2=arie(r1,r2);
            p2=perimetru(r1,r2);

        }
    inter(b1,b2,c1,c2,r1,r2);
    if (ver(r1,r2))
        {
            s3=arie(r1,r2);
            p3=perimetru(r1,r2);

        }
    g<<arie(a1,a2)+arie(b1,b2)+arie(c1,c2)-s1-s2-s3+s4<<" ";
    g<<perimetru(a1,a2)+perimetru(b1,b2)+perimetru(c1,c2)-p1-p2-p3+p4;


    return 0;
}