Pagini recente » Cod sursa (job #1422094) | Cod sursa (job #2620524) | Cod sursa (job #506920) | Cod sursa (job #2536776) | Cod sursa (job #1826395)
#include <cstdio>
#include <algorithm>
#include <iostream>
#define mp make_pair
#define fs first
#define sc second
using namespace std;
long long s,p;
int k;
pair <int,int> a[3][2];
pair <int,int> it[4][2];
void perimetru()
{
int i;
for (i = 0; i< 3; ++i)
p += 2LL * ((long long)(a[i][1].fs - a[i][0].fs) + (a[i][1].sc - a[i][0].sc));
for (i = 0; i < k; ++i)
{
if (it[i][1].fs >= it[i][0].fs && it[i][1].sc >= it[i][0].sc)
p -= 2LL * ((long long) it[i][1].fs - it[i][0].fs + it[i][1].sc - it[i][0].sc);
}
if (it[k][1].fs >= it[k][0].fs && it[k][1].sc >= it[k][0].sc)
p += 2LL * ((long long) it[k][1].fs - it[k][0].fs + it[k][1].sc - it[k][0].sc);
}
void arie()
{
int i;
long long j = 0;
for (i = 0; i < 3; ++i)
if (a[i][1].fs - a[i][0].fs > 0 && a[i][1].sc - a[i][0].sc > 0)
s += 1LL * ((long long)a[i][1].fs - a[i][0].fs) * ((long long)a[i][1].sc - a[i][0].sc);
for (i = 0; i < k ; ++i)
if (it[i][1].fs - it[i][0].fs > 0 && it[i][1].sc - it[i][0].sc > 0)
s -= 1LL * ((long long)it[i][1].fs - it[i][0].fs ) * ((long long)it[i][1].sc - it[i][0].sc );
if (it[k][1].fs > it[k][0].fs && it[k][1].sc > it[k][0].sc)
s += 1LL * (it[k][1].fs - it[k][0].fs) * (it[k][1].sc - it[k][0].sc);
}
int main()
{
int i,j;
freopen("reuniune.in","r",stdin);
for (i = 0; i < 3; ++i)
for (j = 0; j < 2; ++j)
scanf("%d%d", &a[i][j].fs, &a[i][j].sc);
for (i = 0; i < 3; ++i)
for (j = i + 1; j < 3; ++j)
{
it[k][0] = mp( max(a[i][0].fs, a[j][0].fs), max(a[i][0].sc, a[j][0].sc));
it[k++][1] = mp( min(a[i][1].fs, a[j][1].fs), min(a[i][1].sc, a[j][1].sc));
}
it[k][0] = mp(- 2000000000, - 2000000000);
it[k][1] = mp(2000000000,2000000000);
for (i = 0; i < k ; ++i)
{
if (it[i][0] > it[k][0])
it[k][0] = it[i][0];
if (it[i][1] < it[k][1])
it[k][1] = it[i][1];
}
perimetru();
arie();
freopen("reuniune.out","w",stdout);
cout << s << " " << p << "\n";
}