Cod sursa(job #1291989)

Utilizator radu_cosmaRadu Cosma radu_cosma Data 13 decembrie 2014 15:44:27
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("reuniune.in");
ofstream g("reuniune.out");
struct dreptunghi
    {
        long long x1,x2,y1,y2;
    };
long long perimetru(dreptunghi d1)
{
    return 2*(d1.x2-d1.x1)+2*(d1.y2-d1.y1);
}
long long 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;
    f>>d1.x1>>d1.y1>>d1.x2>>d1.y2>>d2.x1>>d2.y1>>d2.x2>>d2.y2>>d3.x1>>d3.y1>>d3.x2>>d3.y2;
    g<<arie(d1)+arie(d2)+arie(d3)-arie(intersectie(d1,d2))-arie(intersectie(d2,d3))-arie(intersectie(d1,d3))+arie(intersectie(intersectie(d1,d2),d3))<<" ";
    g<<perimetru(d1)+perimetru(d2)+perimetru(d3)-perimetru(intersectie(d1,d2))-perimetru(intersectie(d2,d3))-perimetru(intersectie(d1,d3))+perimetru(intersectie(intersectie(d1,d2),d3));
}