Cod sursa(job #2091332)

Utilizator llalexandruLungu Alexandru Ioan llalexandru Data 19 decembrie 2017 16:27:12
Problema Reuniune Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream>
using namespace std;
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");
struct punct
{
    int x, y;
};
struct dreptunghi
{
    punct a,b;
} d1,d2,d3, i1, i2, i3, i4;
void citire(dreptunghi &d)
{
    fin>>d.a.x>>d.a.y>>d.b.x>>d.b.y;
}
dreptunghi inters(dreptunghi d1, dreptunghi d2)
{
    dreptunghi i1;
    i1.a.x=max(d1.a.x,d2.a.x);
    i1.a.y=max(d1.a.y,d2.a.y);
    i1.b.x=min(d1.b.x,d2.b.x);
    i1.b.y=min(d1.b.y,d2.b.y);
    return i1;
}
int per(dreptunghi d)
{
    int s;
    if(d.a.x>d.b.x||d.b.y<d.a.y)
        return 0;
    s=(d.b.x-d.a.x)*2+(d.b.y-d.a.y)*2;
    return s;
}
int aria(dreptunghi d)
{
    int s;
    if(d.a.x>d.b.x||d.b.y<d.a.y)
        return 0;
    s=(d.b.x-d.a.x)*(d.b.y-d.a.y);
    return s;
}
int main()
{
    citire(d1);
    citire(d2);
    citire(d3);
    i1=inters(d1,d2);
    i2=inters(d2,d3);
    i3=inters(d3,d1);
    i4=inters(d1,i2);
    fout<<aria(d1)+aria(d2)+aria(d3)-aria(i1)-aria(i2)-aria(i3)+aria(i4)<<' ';
    fout<<per(d1)+per(d2)+per(d3)-per(i1)-per(i2)-per(i3)+per(i4);

    return 0;
}