Cod sursa(job #993047)

Utilizator Barcau_EmanuelBarcau Emanuel Barcau_Emanuel Data 3 septembrie 2013 08:59:21
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<fstream>
using namespace std;
ifstream f("reuniune.in");
ofstream g("reuniune.out");
long long s,p,l,L;

struct k{
long long x1,x2,y1,y2;};
k a,b,c;

k fct(k c1,k c2)
{
    k nul,o;
    nul.x1=nul.x2=nul.y1=nul.y2=0;
    o.x1=max(c1.x1,c2.x1);
    o.y1=max(c1.y1,c2.y1);
    o.x2=min(c1.x2,c2.x2);
    o.y2=min(c1.y2,c2.y2);

    if(o.x1>o.x2||o.y1>o.y2) return nul;
    else return o;

}

long long arie(k o)
{
    return (o.x2-o.x1)*(o.y2-o.y1);
}
long long perimetru(k o)
{
    return 2*(o.x2-o.x1+o.y2-o.y1);
}

int main ()
{
    f>>a.x1>>a.y1>>a.x2>>a.y2;
    f>>b.x1>>b.y1>>b.x2>>b.y2;
    f>>c.x1>>c.y1>>c.x2>>c.y2;

    g<<arie(a)+arie(b)+arie(c)-arie(fct(a,b))-arie(fct(a,c))-arie(fct(b,c))+arie(fct(fct(a,b),c))<<" "<<perimetru(a)+perimetru(b)+perimetru(c)-perimetru(fct(a,b))-perimetru(fct(a,c))-perimetru(fct(b,c))+perimetru(fct(fct(a,b),c));


return 0;
}