Cod sursa(job #3341013)

Utilizator Cezar2009Cezar Mihai Titihazan Cezar2009 Data 17 februarie 2026 17:20:20
Problema Reuniune Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.81 kb
//https://www.infoarena.ro/problema/reuniune

//#ifdef _MSC_VER
//	#define _CRT_SECURE_NO_WARNINGS
//#elif  __GNUC__
//	#pragma GCC optimize("Ofast,unroll-loops,inline")
//	#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
//#endif

//#define _USE_MATH_DEFINES

#include <iostream>
#include <fstream>
#include <utility>
#include <cstdint>
//#include <cstdio>
//#include <algorithm>
//#include <vector>
//#include <array>
//#include <list>
//#include <forward_list>
//#include <string>
//#include <cstring>
//#include <cmath>
//#include <bitset>
//#include <queue>
//#include <stack>
//#include <map>
//#include <set>
//#include <unordered_map>
//#include <unordered_set>
//#include <limits>
//#include <climits>
//#include <iomanip>
//#include <tuple>
//#include <numeric>
//#include <chrono>
//#include <memory>

using namespace std;

using int64 = int64_t;
using uint64 = uint64_t;
using int16 = int16_t;
using uint16 = uint16_t;
using pii = pair<int, int>;
using pll = pair<int64, int64>;

#define all(x) (x).begin(), (x).end()
#define sz(x) (int)(x).size()
#define pb push_back
#define for0(i,n) for(auto i=0; i<(n); ++i)
#define rfor0(i,n) for(auto i=(n)-1; i>=0; --i)
#define for1(i,n) for(auto i=1; i<=(n); ++i)
#define rfor1(i,n) for(auto i=(n); i>=1; --i)
#define foreach(x,a) for(auto& x : a)
#define cforeach(x,a) for(const auto& x : a)
#define cendl cout << "\n"
#define fendl fout << "\n"
#define FASTIO ios::sync_with_stdio(false); cin.tie(nullptr);

ifstream fin("reuniune.in");
ofstream fout("reuniune.out");

//FILE* fin = fopen("", "r");
//FILE* fout = fopen("", "w");

struct Dreptunghi
{
	int64 x1, y1, x2, y2;
}dr[3];

int arie(Dreptunghi d)
{
	int64 lat = abs(d.x2 - d.x1);
	int64 lun = abs(d.y2 - d.y1);
	return lat * lun;
}

int perimetru(Dreptunghi d)
{
	int64 lat = abs(d.x2 - d.x1);
	int64 lun = abs(d.y2 - d.y1);
	return 2 * (lat + lun);
}

Dreptunghi intersectie(Dreptunghi d1, Dreptunghi d2)
{
	Dreptunghi di;

	di.x1 = max(d1.x1, d2.x1);
	di.y1 = max(d1.y1, d2.y1);
	di.x2 = min(d1.x2, d2.x2);
	di.y2 = min(d1.y2, d2.y2);

	return di;
}

int main()
{
	//FASTIO;

	for0(i, 3)
		fin >> dr[i].x1 >> dr[i].y1 >> dr[i].x2 >> dr[i].y2;

	int64 rezarie = arie(dr[0]) + arie(dr[1]) + arie(dr[2]);
	rezarie = rezarie - (arie(intersectie(dr[0], dr[1])) + arie(intersectie(dr[1], dr[2])) + arie(intersectie(dr[0], dr[2])));
	rezarie = rezarie + arie(intersectie(dr[0], intersectie(dr[1], dr[2])));

	int64 rezper = perimetru(dr[0]) + perimetru(dr[1]) + perimetru(dr[2]);
	rezper = rezper - (perimetru(intersectie(dr[0], dr[1])) + perimetru(intersectie(dr[1], dr[2])) + perimetru(intersectie(dr[0], dr[2])));
	rezper = rezper + perimetru(intersectie(dr[0], intersectie(dr[1], dr[2])));

	fout << rezarie << " " << rezper << "\n";

	return 0;
}