Pagini recente » Cod sursa (job #1775422) | Cod sursa (job #1550492) | Cod sursa (job #316863) | Cod sursa (job #2029986) | Cod sursa (job #1842143)
#include<fstream>
using namespace std;
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");
long long aria, perimetru;
struct dreptunghi{
int xmin;
int ymin;
int xmax;
int ymax;
} a, b, c;
long long A( dreptunghi n ){
return 1LL * ( n.ymax - n.ymin ) * ( n.xmax - n.xmin );
}
long long P( dreptunghi n ){
return 2LL * ( ( n.ymax - n.ymin ) + ( n.xmax - n.xmin ) );
}
dreptunghi intersect( dreptunghi x, dreptunghi y ){
dreptunghi z;
z.xmin = max( x.xmin, y.xmin );
z.ymin = max( x.ymin, y.ymin );
z.xmax = min( x.xmax, y.xmax );
z.ymax = min( x.ymax, y.ymax );
if( z.xmin > z.xmax || z.ymin > z.ymax ){
z.xmin = z.xmax = z.ymax = z.ymin = 0;
}
return z;
}
int main(){
fin >> a.xmin >> a.ymin >> a.xmax >> a.ymax;
fin >> b.xmin >> b.ymin >> b.xmax >> b.ymax;
fin >> c.xmin >> c.ymin >> c.xmax >> c.ymax;
aria = A( a ) + A( b ) + A( c );
perimetru = P( a ) + P( b ) + P( c );
aria -= A( intersect( a, b ) );
perimetru -= P( intersect( a, b ) );
aria -= A( intersect( a, c ) );
perimetru -= P( intersect( a, c ) );
aria -= A( intersect( b, c ) );
perimetru -= P( intersect( b, c ) );
aria += A( intersect( b, intersect( a, c ) ) );
perimetru += P( intersect( b, intersect( a, c ) ) );
fout << aria << " " << perimetru;
return 0;
}