Cod sursa(job #1291952)

Utilizator calinalexandruAlexandru Calin calinalexandru Data 13 decembrie 2014 15:27:36
Problema Reuniune Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <fstream>
#include <cmath>
using namespace std;
ifstream in("reuniune.in");
ofstream out("reuniune.out");
struct dreptunghi
    {
        int x1,x2,y1,y2;
    };
int perimetru(dreptunghi d1)
{
    return 2*(d1.x2-d1.x1)+2*(d1.y2-d1.y1);
}
int arie(dreptunghi d1)
{
    return (d1.x2-d1.x1)*(d1.y2-d1.y1);
}
dreptunghi intersectie(dreptunghi d1,dreptunghi d2)
{
    dreptunghi inter;
    inter.x1=max(d1.x1,d2.x1);
    inter.x2=min(d1.x2,d2.x2);
    inter.y1=max(d1.y1,d2.y1);
    inter.y2=min(d1.y2,d2.y2);
    if(inter.x1>inter.x2 || inter.y1>inter.y2)
    {
        inter.x1=inter.x2=inter.y1=inter.y2=0;
    }
    return inter;
}
int main()
{
    dreptunghi d1,d2,d3;
    in>>d1.x1>>d1.y1>>d1.x2>>d1.y2>>d2.x1>>d2.y1>>d2.x2>>d2.y2>>d3.x1>>d3.y1>>d3.x2>>d3.y2;
    out<<arie(d1)+arie(d2)+arie(d3)-arie(intersectie(d1,d2))-arie(intersectie(d2,d3))-arie(intersectie(d1,d3))+arie(intersectie((intersectie(d1,d2)),d3))<<" ";
    out<<perimetru(d1)+perimetru(d2)+perimetru(d3)-perimetru(intersectie(d1,d2))-perimetru(intersectie(d2,d3))-perimetru(intersectie(d1,d3))+perimetru(intersectie(intersectie(d1,d2),d3));
}