Cod sursa(job #68857)

Utilizator blasterzMircea Dima blasterz Data 29 iunie 2007 17:51:07
Problema Reuniune Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.11 kb
#include<stdio.h>
#define ull long long

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);

}

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

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

  p1=(ull)2*(l1+L1);
  p2=(ull)2*(l2+L2);
  p3=(ull)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;
}
*/
template <class T> T minim(T a, T b)
{
	if(a<b) return a;
	return b;
}
template <class T> T maxim(T a, T b)
{
	if(a>b) return a;
	return b;
}


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

  lat1=(ull)r2x-r1x;
  lat2=(ull)r2y-r1y;

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


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

  lat1=(ull)r2x-r1x;
  lat2=(ull)r2y-r1y;

  a13=(ull)lat1*lat2;
  p13=(ull)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);

  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;
}