Cod sursa(job #3134624)

Utilizator Ilie_MityIlie Dumitru Ilie_Mity Data 29 mai 2023 21:20:10
Problema Reuniune Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
//Ilie Dumitru
#include<cstdio>
#include<algorithm>
const int NMAX=105;

struct rect
{
	int x0, y0, x1, y1;

	long long arie()
	{
		return (x1-x0)*(long long)(y1-y0);
	}

	long long perim()
	{
		return (x1-x0+(long long)y1-y0)<<1LL;
	}

	rect operator*(rect a)
	{
		if(x0>a.x1 || x1<a.x0 || y0>a.y1 || a.y0>y1)
			return {0, 0, 0, 0};
		return {std::max(x0, a.x0), std::max(y0, a.y0), std::min(x1, a.x1), std::min(y1, a.y1)};
	}
};

int main()
{
	FILE* f=fopen("reuniune.in", "r"), *g=fopen("reuniune.out", "w");
	//FILE* f=stdin, *g=stdout;
	long long arie=0, perim=0;
	int i;
	rect v[3];

	for(i=0;i<3;++i)
		fscanf(f, "%d%d%d%d", &v[i].x0, &v[i].y0, &v[i].x1, &v[i].y1);

	arie=v[0].arie()+v[1].arie()+v[2].arie()-(v[0]*v[1]).arie()-(v[0]*v[2]).arie()-(v[1]*v[2]).arie()+(v[0]*v[1]*v[2]).arie();
	perim=v[0].perim()+v[1].perim()+v[2].perim()-(v[0]*v[1]).perim()-(v[0]*v[2]).perim()-(v[1]*v[2]).perim()+(v[0]*v[1]*v[2]).perim();

	fprintf(g, "%lld %lld", arie, perim);

	fclose(f);
	fclose(g);
	return 0;
}