Cod sursa(job #2479185)

Utilizator davidcotigacotiga david davidcotiga Data 23 octombrie 2019 15:04:47
Problema Reuniune Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.89 kb
#include <fstream>
#include <cmath>
using namespace std;

ifstream cin("reuniune.in");
ofstream cout("reuniune.out");

int max(int a, int b) {
	if (a > b)
		return a;
	return b;
}
int min(int a, int b) {
	if (a < b)
		return a;
	return b;
}

int max(int a, int b, int c) {
	int max1;
	if (a > b)
		max1 = a;
	else
		max1 = b;

	if (max1 < c)
		max1 = c;
	return max1;
}

int min(int a, int b, int c) {
	int min1;
	if (a < b)
		min1 = a;
	else
		min1 = b;

	if (min1 > c)
		min1 = c;
	return min1;
}

int main() {
	int x0[3], y0[3], x1[3], y1[3];
	for (int i = 0; i < 3; ++i) {
		cin >> x0[i] >> x1[i] >> y0[i] >> y1[i];
	}
	int AXB = (min(y0[0], y0[1]) - max(x0[0], x0[1])) * (min(y1[0], y1[1]) - max(x1[0], x1[1]));
	int AXC = (min(y0[0], y0[2]) - max(x0[0], x0[2])) * (min(y1[0], y1[2]) - max(x1[0], x1[2]));
	int BXC = (min(y0[1], y0[2]) - max(x0[1], x0[2])) * (min(y1[1], y1[2]) - max(x1[1], x1[2]));

	int AXBXC = (min(y0[0], y0[1], y0[2]) - max(x0[0], x0[1], x0[2])) * (min(y1[0], y1[1], y1[2]) - max(x1[0], x1[1], x1[2]));

	//cout << AXB << " " << AXC << " " << BXC << "\n" << AXBXC;

	if ((min(y0[0], y0[1]) - max(x0[0], x0[1])) < 0 || (min(y1[0], y1[1]) - max(x1[0], x1[1])) < 0)
		AXB = 0;
	if ((min(y0[0], y0[2]) - max(x0[0], x0[2])) < 0 || (min(y1[0], y1[2]) - max(x1[0], x1[2])) < 0)
		AXC = 0;
	if ((min(y0[1], y0[2]) - max(x0[1], x0[2])) < 0 || (min(y1[1], y1[2]) - max(x1[1], x1[2])) < 0)
		BXC = 0;

	//cout << AXB << " " << AXC << " " << BXC;
	if ((min(y0[0], y0[1], y0[2]) - max(x0[0], x0[1], x0[2])) < 0 || (min(y1[0], y1[1], y1[2]) - max(x1[0], x1[1], x1[2])) < 0)
		AXBXC = 0;
	cout << (y0[0] - x0[0]) * (y1[0] - x1[0]) + (y0[1] - x0[1]) * (y1[1] - x1[1]) + (y0[2] - x0[2]) * (y1[2] - x1[2]) - AXB - AXC - BXC + AXBXC << " ";

	AXB = (min(y0[0], y0[1]) - max(x0[0], x0[1])) * 2 + (min(y1[0], y1[1]) - max(x1[0], x1[1])) * 2;
	AXC = (min(y0[0], y0[2]) - max(x0[0], x0[2])) * 2 + (min(y1[0], y1[2]) - max(x1[0], x1[2])) * 2;
	BXC = (min(y0[1], y0[2]) - max(x0[1], x0[2])) * 2 + (min(y1[1], y1[2]) - max(x1[1], x1[2])) * 2;

	AXBXC = abs(min(y0[0], y0[1], y0[2]) - min(y1[0], y1[1], y1[2])) * 2 + abs(max(x0[1], x0[2], x0[0]) - max(x1[0], x1[1], x1[2])) * 2;

	if ((min(y0[0], y0[1]) - max(x0[0], x0[1])) < 0 || (min(y1[0], y1[1]) - max(x1[0], x1[1])) < 0)
		AXB = 0;
	if ((min(y0[0], y0[2]) - max(x0[0], x0[2])) < 0 || (min(y1[0], y1[2]) - max(x1[0], x1[2])) < 0)
		AXC = 0;
	if ((min(y0[1], y0[2]) - max(x0[1], x0[2])) < 0 || (min(y1[1], y1[2]) - max(x1[1], x1[2])) < 0)
		BXC = 0;

	//cout << AXB << " " << AXC << " " << BXC;
	if ((min(y0[0], y0[1], y0[2]) - max(x0[0], x0[1], x0[2])) < 0 || (min(y1[0], y1[1], y1[2]) - max(x1[0], x1[1], x1[2])) < 0)
		AXBXC = 0;

	cout << (y0[0] - x0[0]) * 2 + (y1[0] - x1[0]) * 2 + (y0[1] - x0[1]) * 2 + (y1[1] - x1[1]) * 2 + (y0[2] - x0[2]) * 2 + (y1[2] - x1[2]) * 2 - AXB - BXC - AXC + AXBXC;

	return 0;
}