Cod sursa(job #462987)

Utilizator zloteanu.adrianzloteanu adrian nichita zloteanu.adrian Data 14 iunie 2010 12:25:37
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<fstream>
using namespace std;
int main()
{long long x0[3], x1[3], y0[3], y1[3],i,j;
ifstream f("reuniune.in");
for(i=0;i<3;i++)
  f>>x0[i]>>y0[i]>>x1[i]>>y1[i];
long long A=0, P=0;
for(i=0;i<3;i++){
  A+=((x1[i]-x0[i])*(y1[i]-y0[i]));
P+=(2*(x1[i]-x0[i])+2*(y1[i]-y0[i]));}
long long xs,yj,xd,ys;
for(i=0;i<2;i++)
  for(j=i+1;j<3;j++)
    {xs=max(x0[i],x0[j]);
    xd=min(x1[i],x1[j]);
    yj=max(y0[i],y0[j]);
    ys=min(y1[i],y1[j]);
    if(xs<=xd&&yj<=ys)
	 {A-=((xd-xs)*(ys-yj));
     P-=(2*(xd-xs)+2*(ys-yj));}}
xs=max(x0[0],x0[1]);
xs=max(xs,x0[2]);
xd=min(x1[0],x1[1]);
xd=min(xd,x1[2]);
yj=max(y0[0],y0[1]);
yj=max(yj,y0[2]);
ys=min(y1[0],y1[1]);
ys=min(ys,y1[2]);
if(xs<=xd&&yj<=ys)
 {A+=((xd-xs)*(ys-yj));
 P+=(2*(xd-xs)+2*(ys-yj));}
ofstream g("reuniune.out");
g<<A<<' '<<P<<'\n';
return 0;}