Cod sursa(job #538792)

Utilizator zeroblitz36FMI - Roscaneanu George zeroblitz36 Data 21 februarie 2011 21:59:17
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>
#define L long long
using namespace std;
 
typedef struct  {L x1,y1,x2,y2;} dreptunghi;
dreptunghi d1,d2,d3;
L rarie,rperi;
ifstream f("reuniune.in");
ofstream g("reuniune.out");
 
L arie(dreptunghi a)
{
    return (a.x2-a.x1)*(a.y2-a.y1);
}
 
dreptunghi reun(dreptunghi a, dreptunghi b)
{
    dreptunghi q;
    q.x1=max(a.x1,b.x1);
    q.y1=max(a.y1,b.y1);
    q.x2=min(a.x2,b.x2);
    q.y2=min(a.y2,b.y2);
    if (q.x1>q.x2 || q.y1>q.y2)
        q.x1=q.x2=q.y1=q.y2=0;
    return q;
}
 
L per(dreptunghi a)
{
    return 2*(a.x2-a.x1+a.y2-a.y1);
}
 
int main()
{
    f>>d1.x1>>d1.y1>>d1.x2>>d1.y2;
    f>>d2.x1>>d2.y1>>d2.x2>>d2.y2;
    f>>d3.x1>>d3.y1>>d3.x2>>d3.y2;
    rarie=arie(d1)+arie(d2)+arie(d3)-arie(reun(d1,d2))-arie(reun(d1,d3))-arie(reun(d2,d3))+arie(reun(reun(d1,d2),d3));
    rperi=per(d1)+per(d2)+per(d3)-per(reun(d1,d2))-per(reun(d1,d3))-per(reun(d2,d3))+per(reun(reun(d1,d2),d3));
    g<<rarie<<" "<<rperi;
    f.close();
    g.close();
    return 0;
}