Cod sursa(job #1225559)

Utilizator roxana.aeleneiAelenei Roxana roxana.aelenei Data 2 septembrie 2014 21:02:12
Problema Reuniune Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
#include <fstream>
using namespace std;
struct DREPTUNGHI
{
    long x1,x2,y1,y2;
};
int max(int x, int y)
{
    if(x>y) return x;
    else return y;
}

int min(int x, int y)
{
    if(x>y) return y;
    else return x;
}

DREPTUNGHI reuniune (DREPTUNGHI dr1, DREPTUNGHI dr2)
{
    DREPTUNGHI d;
         d.x1=max(dr1.x1,dr2.x1);
         d.y1=max(dr1.y1,dr2.y1);
         d.x2=min(dr1.x2,dr2.x2);
         d.y2=min(dr1.y2,dr2.y2);

         if(d.x1>d.x2 || d.y2<d.y1)
            d.x1=d.x2=d.y1=d.y2=0;
        return d;
}

long long ARIE (DREPTUNGHI d1)
{
    long long  a;
    a=(d1.x2-d1.x1)*(d1.y2-d1.y1);
    return a;
}

long long PERIMETRU (DREPTUNGHI d1)
{
    long long p;
    p=2*((d1.x2-d1.x1)+(d1.y2-d1.y1));
    return p;
}
int main()
{
  ifstream in("reuniune.in");
  ofstream out("reuniune.out");

long long arie,p;
  DREPTUNGHI a,b,c,d;

  in>>a.x1>>a.y1>>a.x2>>a.y2;
  in>>b.x1>>b.y1>>b.x2>>b.y2;
  in>>c.x1>>c.y1>>c.x2>>c.y2;

  arie=ARIE(a)+ARIE(b)+ARIE(c);
  p=PERIMETRU(a)+PERIMETRU(b)+PERIMETRU(c);
  arie=arie-ARIE(reuniune(a,b))-ARIE(reuniune(a,c))-ARIE(reuniune(b,c));
  p=p-PERIMETRU(reuniune(a,b))-PERIMETRU(reuniune(a,c))-PERIMETRU(reuniune(b,c));

    d=reuniune(a,b);
    d=reuniune(d,c);

    arie=arie+ARIE(d);
    p=p+PERIMETRU(d);
out<<arie<<" "<<p<<'\n';
    return 0;
}