Cod sursa(job #28361)

Utilizator conttPop Mircea contt Data 7 martie 2007 19:16:42
Problema Reuniune Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 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.yj&&b.ys<a.ys)||(b.yj>a.yj&&b.yj<a.ys)) )
||(((a.xs>b.xs&&a.xs<b.xj)||(a.xj>b.xs&&a.xj<b.xj))&&((a.ys>b.yj&&a.ys<b.ys)||(a.yj>b.yj&&a.yj<b.ys)) ))

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

 }
	  return p;}

double aria(TX a)
{return abs(a.xs-a.xj)*abs(a.yj-a.ys);}
double perim(TX a)
{return 2*(abs(a.xs-a.xj)+abs(a.yj-a.ys));}
int main()
{int i;   ifstream fin("reuniune.in");
for(i=1;i<=3;i++) fin>>r[i].xs>>r[i].yj>>r[i].xj>>r[i].ys;  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;
}