Pagini recente » Cod sursa (job #1972810) | Cod sursa (job #2484273) | Cod sursa (job #1527283) | Cod sursa (job #164178) | Cod sursa (job #723038)
Cod sursa(job #723038)
#include <fstream>
#define NMAx 10
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))
#define P(K) (2LL*(D[K].Bx-D[K].Ax+D[K].By-D[K].Ay))
#define A(K) (1LL*(D[K].Bx-D[K].Ax)*(D[K].By-D[K].Ay))
using namespace std;
struct Drept{int Ax,Ay,Bx,By;}D[NMAx],Null;
int Nr=3;
void Intersect(int i,int j) {
++Nr;
D[Nr].Ax=max(D[i].Ax,D[j].Ax);
D[Nr].Ay=max(D[i].Ay,D[j].Ay);
D[Nr].Bx=min(D[i].Bx,D[j].Bx);
D[Nr].By=min(D[i].By,D[j].By);
if(D[Nr].Ax>D[Nr].Bx||D[Nr].Ay>D[Nr].By)
D[Nr]=Null;
}
int main() {
ifstream in("reuniune.in");
ofstream out("reuniune.out");
for(int i=1;i<=3;i++)
in>>D[i].Ax>>D[i].Ay>>D[i].Bx>>D[i].By;
Intersect(1,2);
Intersect(2,3);
Intersect(1,3);
Intersect(1,5);
out<<(A(1)+A(2)+A(3)-A(4)-A(5)-A(6)+A(7))<<' ';
out<<(P(1)+P(2)+P(3)-P(4)-P(5)-P(6)+P(7))<<'\n';
in.close();
out.close();
return 0;
}