Cod sursa(job #1295789)

Utilizator chiturobertChitu Robert Alexandru chiturobert Data 20 decembrie 2014 10:49:08
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <iostream>
#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<<" ";
    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));
    g<<'\n';
}