Pagini recente » Cod sursa (job #2118078) | Cod sursa (job #2940289) | Cod sursa (job #1209289) | Cod sursa (job #3238431) | Cod sursa (job #265467)
Cod sursa(job #265467)
#include <iostream>
#include <cstdlib>
#include <algorithm>
using namespace std;
#define pii pair<int,int>
#define ff first
#define ss second
pii Sus[4], Jos[4];
long long arie, perimetru;
void getArie( int x ) {
arie += 1LL * (Sus[x].ff - Jos[x].ff) * (Sus[x].ss - Jos[x].ss);
perimetru += (2LL * (Sus[x].ff - Jos[x].ff) + 2LL * (Sus[x].ss - Jos[x].ss));
}
void getArie2( int x, int y ) {
pii minI, maxI;
minI.ff = max(Jos[x].ff, Jos[y].ff);
minI.ss = max(Jos[x].ss, Jos[y].ss);
maxI.ff = min(Sus[x].ff, Sus[y].ff);
maxI.ss = min(Sus[x].ss, Sus[y].ss);
if (minI.ff <= maxI.ff && minI.ss <= maxI.ss) {
arie -= (maxI.ff - minI.ff) * (maxI.ss - minI.ss);
perimetru -= (2LL * (maxI.ff - minI.ff) + 2LL * (maxI.ss - minI.ss));
}
}
void getArie3( ) {
pii minI, maxI;
minI.ff = max(Jos[3].ff, max(Jos[1].ff, Jos[2].ff));
minI.ss = max(Jos[3].ss, max(Jos[1].ss, Jos[2].ss));
maxI.ff = min(Sus[3].ff, min(Sus[1].ff, Sus[2].ff));
maxI.ss = min(Sus[3].ss, min(Sus[1].ss, Sus[2].ss));
if (minI.ff <= maxI.ff && minI.ss <= maxI.ss){
arie += (maxI.ff - minI.ff) * (maxI.ss - minI.ss);
perimetru += (2LL * (maxI.ff - minI.ff) + 2LL * (maxI.ss - minI.ss));
}
}
void solve( ) {
int i, j;
getArie(1); getArie(2); getArie(3);
for (i = 1; i < 3; ++ i)
for (j = i + 1; j < 4; ++j){
getArie2(i, j);
}
getArie3();
}
int main( ) {
#ifndef DEBUG
freopen("reuniune.in", "r", stdin);
freopen("reuniune.out", "w", stdout);
#endif
scanf("%d%d%d%d", &Jos[1].ff, &Jos[1].ss, &Sus[1].ff, &Sus[1].ss);
scanf("%d%d%d%d", &Jos[2].ff, &Jos[2].ss, &Sus[2].ff, &Sus[2].ss);
scanf("%d%d%d%d", &Jos[3].ff, &Jos[3].ss, &Sus[3].ff, &Sus[3].ss);
solve();
printf("%lld %lld\n", arie, perimetru);
}