Cod sursa(job #923969)

Utilizator rares96cheseliRares Cheseli rares96cheseli Data 23 martie 2013 23:36:01
Problema Reuniune Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>

using namespace std;

ifstream f("reuniune.in");
ofstream g("reuniune.out");

struct drept
{
    long long x1, x2, y1, y2;
}
d[3];
long long a,p;

long long arie(drept a)
{
    return (a.x2-a.x1)*(a.y2-a.y1);
}

long long per(drept a)
{
    return 2*(a.x2-a.x1+a.y2-a.y1);
}

drept reun(drept a, drept b)
{
    drept aux;
    aux.x1=max(a.x1,b.x1);
    aux.y1=max(a.y1,b.y1);
    aux.x2=min(a.x2,b.x2);
    aux.y2=min(a.y2,b.y2);
    if (aux.x1>aux.x2||aux.y1>aux.y2) aux.x1=aux.x2=aux.y1=aux.y2=0;

   return(aux);
}

int main()
{
    for (int i = 0; i < 3; i++)
        f>>d[i].x1>>d[i].y1>>d[i].x2>>d[i].y2;

    a=ar(d[0])+ar(d[1])+ar(d[2])-ar(reun(d[0],d[1]))-ar(reun(d[0],d[2]))-ar(reun(d[1],d[2]))+ar(reun(reun(d[0],d[1]),d[2]));
    p=per(d[0])+per(d[1])+per(d[2])-per(reun(d[0],d[1]))-per(reun(d[0],d[2]))-per(reun(d[1],d[2]))+per(reun(reun(d[0],d[1]),d[2]));
    g<<a<<' '<<p<'\n';
    f.close(); g.close();
  return(0);
}