Cod sursa(job #43209)

Utilizator RutZapGruia Radu RutZap Data 29 martie 2007 21:36:27
Problema Reuniune Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.57 kb
#include <stdio.h>
#include <math.h>
#include <stdlib.h>

int aria (int x1, int y1, int x2, int y2)
{
return abs((x2-x1)*(y2-y1));

}

int perimetru(int x1, int y1, int x2, int y2)
{
return abs((x2-x1)*2) +abs((y2-y1)*2);
}

int min (int a, int b)
{
 if (a<=b) return a;
  else return b;
}

int max (int a, int b)
{
 if (a<=b) return b;
  else return a;
}


int main()
{
freopen("reuniune.in","r", stdin);
freopen("reuniune.out","w", stdout);

long x1s,x1d,y1s,y1d,x2s,x2d,y2s,y2d,x3s,x3d,y3s,y3d;
long arie=0, perim=0;

scanf("%ld %ld %ld %ld", &x1s, &y1s, &x1d, &y1d);
scanf("%ld %ld %ld %ld", &x2s, &y2s, &x2d, &y2d);
scanf("%ld %ld %ld %ld", &x3s, &y3s, &x3d, &y3d);
int ts,vs,tts,vvs;

arie+=aria(x1s,y1s,x1d,y1d);
arie+=aria(x2s,y2s,x2d,y2d);
arie+=aria(x3s,y3s,x3d,y3d);

perim+=perimetru(x1s,y1s,x1d,y1d);
perim+=perimetru(x2s,y2s,x2d,y2d);
perim+=perimetru(x3s,y3s,x3d,y3d);

ts = max(x1s,x2s);
vs = max(y1s,y2s);
tts = min (x1d,x2d);
vvs = min (y1d,y2d);
arie-=aria(ts,vs,tts,vvs);
perim-=perimetru(ts,vs,tts,vvs);

ts = max(x1s,x3s);
vs = max(y1s,y3s);
tts = min (x1d,x3d);
vvs = min (y1d,y3d);
arie-=aria(ts,vs,tts,vvs);
perim-=perimetru(ts,vs,tts,vvs);

ts = max(x3s,x2s);
vs = max(y3s,y2s);
tts = min (x3d,x2d);
vvs = min (y3d,y2d);
arie-=aria(ts,vs,tts,vvs);
perim-=perimetru(ts,vs,tts,vvs);

int xts,xvs,xtts,xvvs;

xts = max(x1s,ts);
xvs = max(y1s,vs);
xtts = min (x1d,tts);
xvvs = min (y1d,vvs);
arie+=aria(xts,xvs,xtts,xvvs);
perim+=perimetru(xts,xvs,xtts,xvvs);


printf("%ld %ld", arie,perim);
return 0;
}