Pagini recente » Cod sursa (job #1226506) | Cod sursa (job #330597) | Cod sursa (job #633100) | Cod sursa (job #2183972) | Cod sursa (job #379500)
Cod sursa(job #379500)
#include <algorithm>
using namespace std;
struct dreptunghi {
long long x0, x1, y0, y1;
};
long long A, P;
dreptunghi aux, d[ 3 ];
long long aria( dreptunghi d ) {
return ( d.x1 - d.x0 )*( d.y1 - d.y0 );
}
long long intersectie( dreptunghi d1, dreptunghi d2 ) {
return d1.x0 <= d2.x1 && d1.x1 >= d2.x0 && d1.y0 <= d2.y1 && d1.y1 >= d2.y0;
}
long long perimetru( dreptunghi d ) {
return 2*( ( d.x1 - d.x0 )+( d.y1 - d.y0 ) );
}
void reuniune( dreptunghi d1, dreptunghi d2 ) {
aux.x0 = max( d1.x0, d2.x0 );
aux.y0 = max( d1.y0, d2.y0 );
aux.x1 = min( d1.x1, d2.x1 );
aux.y1 = min( d1.y1, d2.y1 );
}
int main() {
freopen( "reuniune.in", "r", stdin );
freopen( "reuniune.out", "w", stdout );
int i;
for( i = 0; i < 3; ++i )
scanf( "%lld %lld %lld %lld", &d[ i ].x0, &d[ i ].y0, &d[ i ].x1, &d[ i ].y1 );
A = aria( d[ 0 ] ) + aria( d[ 1 ] ) + aria( d[ 2 ] );
P = perimetru( d[ 0 ] ) + perimetru( d[ 1 ] ) + perimetru( d[ 2 ] );
reuniune( d[ 0 ], d[ 1 ] );
A -= aria( aux );
P -= perimetru( aux );
reuniune( d[ 0 ], d[ 2 ] );
A -= aria( aux );
P -= perimetru( aux );
reuniune( d[ 1 ], d[ 2 ] );
A -= aria( aux );
P -= perimetru( aux );
reuniune( d[ 0 ], d[ 1 ] );
reuniune( aux, d[ 2 ] );
A += aria( aux );
P += perimetru( aux );
printf( "%lld %lld", A, P );
return 0;
}