Cod sursa(job #69030)

Utilizator FlorianFlorian Marcu Florian Data 30 iunie 2007 20:19:18
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.32 kb
#include<stdio.h>

long long int a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y, c1x, c1y, c2x, c2y;
long long int l1, L1, l2 ,L2, l3, L3, a1, a2, a3, a12, a123, P, A;
long long int p1, p2, p3, p12, p123, r1x, r2x, r1y, r2y, p13, p23, a13, a23;

void citire()
{
  freopen("reuniune.in","r",stdin);
  freopen("reuniune.out","w",stdout);

  scanf("%lld %lld %lld %lld",&a1x, &a1y, &a2x, &a2y);
  scanf("%lld %lld %lld %lld",&b1x, &b1y, &b2x, &b2y);
  scanf("%lld %lld %lld %lld",&c1x, &c1y, &c2x, &c2y);

}

int inters(long long x1, long long y1, long long x2, long long y2,
       long long x3, long long y3, long long x4, long long y4)
{
  if (x4<x1) return 0;
  if (y4<y1) return 0;
  if (x3>x2) return 0;
  if (y3>y2) return 0;
  return 1;
}

void laturi()
{
  l1=a2x-a1x; L1=a2y-a1y;
  l2=b2x-b1x; L2=b2y-b1y;
  l3=c2x-c1x; L3=c2y-c1y;

  a1=l1*L1;
  a2=l2*L2;
  a3=l3*L3;

  p1=2*(l1+L1);
  p2=2*(l2+L2);
  p3=2*(l3+L3);

}

long long minim(long long int x, long long int y)
{
  if (x<=y) return x;
    else return y;
}

long long maxim(long long int x, long long int y)
{
  if (x>=y) return x;
    else return y;
}

void intersectii()
{
  long long int lat1, lat2;
  r1x=maxim(a1x,b1x);
  r1y=maxim(a1y,b1y);
  r2x=minim(a2x,b2x);
  r2y=minim(a2y,b2y);

  lat1=r2x-r1x;
  lat2=r2y-r1y;

  a12=lat1*lat2;
  p12=2*(lat1+lat2);


  r1x=maxim(a1x,c1x);
  r1y=maxim(a1y,c1y);
  r2x=minim(a2x,c2x);
  r2y=minim(a2y,c2y);

  lat1=r2x-r1x;
  lat2=r2y-r1y;

  a13=lat1*lat2;
  p13=2*(lat1+lat2);




  r1x=maxim(b1x,c1x);
  r1y=maxim(b1y,c1y);
  r2x=minim(b2x,c2x);
  r2y=minim(b2y,c2y);

  lat1=r2x-r1x;
  lat2=r2y-r1y;

  a23=lat1*lat2;
  p23=2*(lat1+lat2);


  long long x1, x2, y1, y2;

  x1=maxim(a1x,r1x);
  x2=minim(a2x,r2x);
  y1=maxim(a1y,r1y);
  y2=minim(a2y,r2y);


  lat1=x2-x1;
  lat2=y2-y1;

  a123=lat1*lat2;
  p123=2*(lat1+lat2);

  if (inters(a1x,a1y,a2x,a2y,b1x,b1y,b2x,b2y)==0){ a12=0;p12=0;}
  if (inters(a1x,a1y,a2x,a2y,c1x,c1y,c2x,c2y)==0){ a13=0;p13=0;}
  if (inters(c1x,c1y,c2x,c2y,b1x,b1y,b2x,b2y)==0){ a23=0;p23=0;}
  if (a12==0 || a13==0 || a23==0){ a123=0; p123=0;}
  A=a1+a2+a3-a12-a13-a23+a123;
  P=p1+p2+p3-p12-p13-p23+p123;
 
  printf("%lld %lld",A,P);
}

int main()
{
  citire();
  laturi();
  intersectii();
  return 0;
}