Pagini recente » Cod sursa (job #1217654) | Cod sursa (job #665141) | Cod sursa (job #452) | Cod sursa (job #3279858) | Cod sursa (job #2376732)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("reuniune.in") ;
ofstream out ("reuniune.out") ;
struct point
{
int64_t x, y ;
};
struct dreptunghi
{
point jos , sus ;
}d [ 5 ];
int64_t arie2 ( dreptunghi a , dreptunghi b )
{
int64_t c , u , dx , dy ;
c = min ( a.sus.y , b.sus.y ) ;
u = max ( a.jos.y , b.jos.y ) ;
dy = c - u ;
c = min ( a.sus.x , b.sus.x ) ;
u = max ( a.jos.x , b.jos.x ) ;
dx = c - u ;
if ( dy < 0 || dx < 0 ) return 0 ;
d [ 4 ].jos.x = max ( a.jos.x , b.jos.x ) ;
d [ 4 ].jos.y = max ( a.jos.y , b.jos.y ) ;
d [ 4 ].sus.x = min ( a.sus.x , b.sus.x ) ;
d [ 4 ].sus.y = min ( a.sus.y , b.sus.y ) ;
return dx * dy ;
}
int64_t arie ( dreptunghi a )
{
return ( a.sus.x - a.jos.x ) * ( a.sus.y - a.jos.y ) ;
}
int64_t p ( dreptunghi a )
{
return ( a.sus.x - a.jos.x + a.sus.y - a.jos.y ) * 2 ;
}
int64_t p2 ( dreptunghi a , dreptunghi b )
{
int64_t c , u , dx , dy ;
c = min ( a.sus.y , b.sus.y ) ;
u = max ( a.jos.y , b.jos.y ) ;
dy = c - u ;
c = min ( a.sus.x , b.sus.x ) ;
u = max ( a.jos.x , b.jos.x ) ;
dx = c - u ;
if ( dy < 0 || dx < 0 ) return 0 ;
return ( dx + dy ) * 2 ;
}
int main()
{
for ( int i = 1 ; i <= 3 ; ++ i )
in >> d [ i ].jos.x >> d [ i ].jos.y >> d [ i ].sus.x >> d [ i ].sus.y ;
out << 1LL * ( arie ( d [ 1 ] ) + arie ( d [ 2 ] ) + arie ( d [ 3 ] ) - arie2 ( d[1] , d[2] ) - arie2( d[1] , d[3] ) - arie2 ( d[2] , d[3] ) + arie2 (d[1] , d[4]) ) << ' ' ;
out << 1LL * ( p(d[1]) + p(d[2]) + p(d[3]) - p2( d[1] , d[2] ) - p2 ( d[1] , d[3] ) - p2 ( d[2] , d[3] ) + p2 (d[1] , d[4]) ) ;
}