Cod sursa(job #476576)

Utilizator CS-meStanca Marian Ciprian CS-me Data 11 august 2010 17:02:07
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.37 kb
#include <iostream>
#include <stdio.h>
#include <vector>

using namespace std;

const int X1 = 0;
const int X2 = 1;
const int Y1 = 2;
const int Y2 = 3;


int rec[ 8 ][ 4 ];
long long Per;
long long Arie;
int c;

void inter( int r1,int r2,int rf ) {
	rec[rf][X1] = max( rec[r1][X1], rec[r2][X1] );
	rec[rf][X2] = min( rec[r1][X2], rec[r2][X2] );
	rec[rf][Y1] = max( rec[r1][Y1], rec[r2][Y1] );
	rec[rf][Y2] = min( rec[r1][Y2], rec[r2][Y2] );
}

long long cArie( int r ) {
	if ( rec[r][X1] <= rec[r][X2] && rec[r][Y1] <= rec[r][Y2] ) {
		return ( (long long) (rec[r][X2]-rec[r][X1])*(rec[r][Y2]-rec[r][Y1] ) );
	}
	return 0;
}

long long cPer( int r ) {
	if ( rec[r][X1] <= rec[r][X2] && rec[r][Y1] <= rec[r][Y2] ) {
		return ( (long long) 2*(rec[r][X2]-rec[r][X1]) + 2*(rec[r][Y2]-rec[r][Y1]) );
	}
	return 0;
}

int main()
{
	int x0,y0,x1,y1;
	int scot;

	freopen("reuniune.in","r",stdin);
	freopen("reuniune.out","w",stdout);

	for ( int i = 0; i < 3; i++ )
		scanf("%d %d %d %d\n", &rec[i][X1], &rec[i][Y1], &rec[i][X2], &rec[i][Y2] );
	inter( 0, 1, 3 );
	inter( 0, 2, 4 );
	inter( 1, 2, 5 );
	inter( 3, 4, 6 );
	inter( 5, 6, 7 );

	Arie = cArie(0) + cArie(1) + cArie(2) - cArie(3) - cArie(4) - cArie(5) + cArie(7);
	Per = cPer(0) + cPer(1) + cPer(2) - cPer(3) - cPer(4) - cPer(5) + cPer(7);

	printf("%lld %lld\n", Arie, Per);

	return 0;
}