Cod sursa(job #1728745)

Utilizator pas.andreiPopovici Andrei-Sorin pas.andrei Data 13 iulie 2016 16:34:35
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>

using namespace std;

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

struct drept {
	long long x1,y1,x2,y2;
}v[10];

drept inter(int i, int j) {
	drept a;

	a.x1=max(v[i].x1,v[j].x1);
	a.y1=max(v[i].y1,v[j].y1);
	a.x2=min(v[i].x2,v[j].x2);
	a.y2=min(v[i].y2,v[j].y2);
	if(a.x1>a.x2||a.y1>a.y2) a={0,0,0,0};
	return a;
}

long long p(int i) {return 2*(v[i].x2-v[i].x1+v[i].y2-v[i].y1);}
long long a(int i) {return (v[i].x2-v[i].x1)*(v[i].y2-v[i].y1);}

int main() {
    for(int i=0;i<3;++i) fin>>v[i].x1>>v[i].y1>>v[i].x2>>v[i].y2;
	v[3]=inter(0,1);
	v[4]=inter(0,2);
	v[5]=inter(1,2);
	v[6]=inter(3,2);

	fout<<a(0)+a(1)+a(2)-a(3)-a(4)-a(5)+a(6)<<' '<<p(0)+p(1)+p(2)-p(3)-p(4)-p(5)+p(6);
}