Cod sursa(job #28316)

Utilizator conttPop Mircea contt Data 7 martie 2007 18:37:25
Problema Reuniune Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 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)))     ||
(((a.xs<b.xs&&a.xs>b.xj)||(a.xj<b.xs&&a.xj>b.xj))&&((a.ys>b.ys&&a.ys<b.yj)|| (a.yj<b.yj&&a.yj>b.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 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].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;
}