Cod sursa(job #886694)
#include <fstream>
#include <stdio.h>
#include <assert.h>
using namespace std;
const int OO = (1 << 31) - 1;
struct dreptunghi { int xs, xd, yj, ys; } D[5];
long long A, P;
void cit ()
{
for (int i = 0; i < 3; i++)
{
scanf ("%d%d%d%d", &D[i].xs, &D[i].yj, &D[i].xd, &D[i].ys);
}
}
void rez ()
{
int i, b, nr;
long long dA, dP;
for (i = 1; i < (1 << 3); i++)
{
nr = 0;
D[3].xs = D[3].yj = -OO;
D[3].xd = D[3].ys = OO;
for (b = 0; b < 3; b++)
{
if ((i >> b) & 1)
{
nr ++;
D[3].xs = max (D[3].xs, D[b].xs);
D[3].yj = max (D[3].yj, D[b].yj);
D[3].xd = min (D[3].xd, D[b].xd);
D[3].ys = min (D[3].ys, D[b].ys);
}
}
if (D[3].xs > D[3].xd || D[3].yj > D[3].ys)
{
dA = 0;
dP = 0;
}
else
{
dA = (long long)(D[3].xd - D[3].xs) * (D[3].ys - D[3].yj);
dP = ((long long)(D[3].xd - D[3].xs) + (D[3].ys - D[3].yj)) << 1;
if ((nr & 1) == 0)
{
dA = -dA;
dP = -dP;
}
}
A += dA;
P += dP;
}
}
void afi ()
{
printf ("%lld ", A);
printf ("%lld ", P);
}
int main ()
{
freopen ("reuniune.in", "r", stdin);
freopen ("reuniune.out", "w", stdout);
cit ();
rez ();
afi ();
return 0;
}