Cod sursa(job #2123199)

Utilizator shantih1Alex S Hill shantih1 Data 5 februarie 2018 21:40:09
Problema Reuniune Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.53 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");
int rza,rzp,peri,arie,p1,p2,p3,a1,a2,a3;
struct rect
{	int lx,ly,rx,ry;	} d,d1,d2,d3,aux;
void inter (rect a,rect b)
{
	if(b.ly<a.ry&&b.rx>a.lx&&b.lx<a.rx)
	{
		int l1=0,l2=0;
		if(b.lx<a.lx)
		{
			if(b.ry>a.ry)
			{
				l1=a.ry-b.ly;
				if(b.rx>a.rx)	l2=a.rx-a.lx;
			}
			if(b.ry<=a.ry)
			{
				l1=b.ry-b.ly;
				if(b.rx>a.rx)	l2=a.rx-b.rx;
			}
			d.lx=a.lx;		d.ly=b.ly;
			if(b.rx<=a.rx)	l2=b.rx-a.lx;
		}
		if(b.lx>a.lx)
		{
			if(b.ry>a.ry)
			{
				l1=a.ry-b.ly;
				if(b.rx>a.rx)	l2=a.rx-b.lx;
			}
			if(b.ry<=a.ry)
			{
				l1=b.ry-b.ly;
				if(b.rx>a.rx)	l2=a.rx-b.lx;
			}
			d.lx=b.lx;	d.ly=b.ly;
			if(b.rx<=a.rx)	l2=b.rx-b.lx;
		}
		d.rx=min(b.rx,a.rx);
		d.ry=min(b.ry,a.ry);
		arie=l1*l2;
		peri=2*l1+2*l2;
	}
	else
	{	arie=0;	peri=0;	  }
}
int main () {
	
	fin>>d1.lx>>d1.ly>>d1.rx>>d1.ry;
	fin>>d2.lx>>d2.ly>>d2.rx>>d2.ry;
	fin>>d3.lx>>d3.ly>>d3.rx>>d3.ry;
	if(d1.ly>d2.ly)	{	aux=d1;	d1=d2;	d2=aux;		}
	if(d1.ly>d3.ly)	{	aux=d1;	d1=d3;	d3=aux;		}
	if(d2.ly>d3.ly)	{	aux=d2;	d2=d3;	d3=aux;		}
	a1=(d1.rx-d1.lx)*(d1.ry-d1.ly);
	a2=(d2.rx-d2.lx)*(d2.ry-d2.ly);
	a3=(d3.rx-d3.lx)*(d3.ry-d3.ly);
	p1=2*(d1.rx-d1.lx)+2*(d1.ry-d1.ly);
	p2=2*(d2.rx-d2.lx)+2*(d2.ry-d2.ly);
	p3=2*(d3.rx-d3.lx)+2*(d3.ry-d3.ly);
	rza=a1+a2+a3;
	rzp=p1+p2+p3;
	inter(d1,d2);
	rza-=arie;	rzp-=peri;
	inter(d1,d3);
	rza-=arie;	rzp-=peri;
	inter(d2,d3);
	rza-=arie;	rzp-=peri;
	inter(d1,d2);
	inter(d,d3);
	rza+=arie;	rzp+=peri;
	fout<<rza<<" "<<rzp<<"\n";
}