Cod sursa(job #29087)

Utilizator s120489Martonos Stefan s120489 Data 8 martie 2007 16:50:20
Problema Reuniune Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 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 fabs(a.xs-a.xj)*fabs(a.yj-a.ys);}
double perim(TX a)
{return 2*(fabs(a.xs-a.xj)+fabs(a.yj-a.ys));}
int main()
{int i; double a,b,c,ab,ac,bc,abc;  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");
a=aria(r[1]);
b=aria(r[2]);
c=aria(r[3]);
ab=aria(inter(r[1],r[2]));
ac=aria(inter(r[1],r[3]));
bc=aria(inter(r[2],r[3]));
     abc= aria(inter(inter(r[1],r[2]),r[3]));
     fout<<a+b+c+-ab-bc-ac+abc;
a=perim(r[1]);
b= perim(r[2]);
c=perim(r[3]);
     ab=perim(inter(r[1],r[2]));
     ac=perim(inter(r[1],r[3]));
     bc=perim(inter(r[2],r[3]));
     abc= perim(inter(inter(r[1],r[2]),r[3]));
     fout<<" "; fout<<a+b+c+-ab-bc-ac+abc;

fout.close();
return 0;
}