Cod sursa(job #913714)

Utilizator traista.lamaitaTraista traista.lamaita Data 13 martie 2013 18:46:00
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include<fstream>
using namespace std;
ifstream f("reuniune.in");
ofstream g("reuniune.out");
struct dreptunghi {long long x1, x2, y1, y2;} d[4];
long long a,p;

long long arie(dreptunghi A)
{return (A.x2 - A.x1) * (A.y2 - A.y1);}
  
long long per(dreptunghi A)
{return 2 * (A.x2 - A.x1 + A.y2 - A.y1);}
  
dreptunghi intr (dreptunghi A1, dreptunghi A2)
{dreptunghi intr;
 intr.x1 = max(A1.x1 , A2.x1);
 intr.y1 = max(A1.y1 , A2.y1);
 intr.x2 = min(A1.x2 , A2.x2);
 intr.y2 = min(A1.y2 , A2.y2);
 if (intr.x1 > intr.x2 || intr.y1 > intr.y2)
        intr.x1 = intr.x2 = intr.y1 = intr.y2 = 0;
 return(intr);
}
  
int main()
{for (int i = 1; i <= 3; i++)
	f>> d[i].x1 >> d[i].y1 >> d[i].x2 >> d[i].y2;
 a = arie(d[1]) + arie(d[2]) + arie(d[3]) -
         arie(intr(d[1], d[2])) - arie(intr(d[1], d[3])) - arie(intr(d[2] , d[3])) +
         arie(intr(intr(d[1] , d[2]) , d[3]));
 p = per(d[1]) + per(d[2]) + per(d[3]) -
        per(intr(d[1], d[2])) - per(intr(d[1], d[3])) - per(intr(d[2],d[3])) +
        per(intr(intr(d[1], d[2]), d[3]));
 g<<a<<" "<<p;
 g.close();
 return 0;
}