Cod sursa(job #28282)

Utilizator conttPop Mircea contt Data 7 martie 2007 17:55:33
Problema Reuniune Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
# include <fstream.h>
# include <math.h>
typedef struct drept{double xs,ys,xj,yj;}TX; TX r[5],p,dr;
double max(double a,double b)
{if(a>=b)return a;else return b;
}double min(double a,double b)
{if(a<=b)return a;else return b;
}
TX inter(TX a,TX b)
{TX p;p.xs=p.ys=p.xj=p.yj=0;
if((b.xs<a.xs&&b.xs>a.xj)|| (b.xj<a.xs&&b.xj>a.xj)||
   (b.ys>a.ys&&b.ys<a.yj)|| (b.yj<a.yj&&b.yj>a.ys) )

 {p.xs=min(a.xs,b.xs);p.ys=max(a.ys,b.ys);
  p.xj=max(a.xj,b.xj);p.yj=min(a.yj,b.yj);

 }
  return p;}

double aria(TX a)
{return (a.xs-a.xj)*(a.yj-a.ys);}
double perim(TX a)
{return 2*((a.xs-a.xj)+(a.yj-a.ys));}
int main()
{int i;   ifstream fin("reuniune.in");
for(i=1;i<=3;i++) fin>>r[i].xj>>r[i].ys>>r[i].xs>>r[i].yj;  fin.close();
 ofstream fout("reuniune.out");
fout<<aria(r[1])+ aria(r[2])+aria(r[3])
     -aria(inter(r[1],r[2]))-aria(inter(r[1],r[3]))-aria(inter(r[2],r[3]))
     + aria(inter(inter(r[1],r[2]),r[3]))<<" ";
fout<<perim(r[1])+ perim(r[2])+perim(r[3])
     -perim(inter(r[1],r[2]))-perim(inter(r[1],r[3]))-perim(inter(r[2],r[3]))
     + perim(inter(inter(r[1],r[2]),r[3]))<<"\n";
fout.close();
return 0;
}