Cod sursa(job #206858)

Utilizator MciprianMMciprianM MciprianM Data 10 septembrie 2008 10:43:56
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 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];
  f.close();
  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';
  g.close();
  return 0;
}