Pagini recente » Cod sursa (job #2851646) | Cod sursa (job #2038020) | Cod sursa (job #477563) | Cod sursa (job #645836) | Cod sursa (job #50401)
Cod sursa(job #50401)
#include <stdio.h>
#define fin "reuniune.in"
#define fout "reuniune.out"
#define NMAX 3
struct drept
{
int x1,y1,x2,y2;
} dr[NMAX];
long long peri(drept & r)
{
return 2 * (r.x2-r.x1) + 2 * (r.y2-r.y1);
}
long long arie(drept & r)
{
return (r.x2-r.x1)*(r.y2-r.y1);
}
drept inters(drept r1,drept r2)
{
drept d ={0,0,0,0};
if(r2.x1 >= r1.x2 | r1.x1 >= r2.x2 | r1.y1 >= r2.y2 | r2.y1 >= r1.y2)
return d;
d.x1 = r1.x1>r2.x1?r1.x1:r2.x1;
d.y1 = r1.y1>r2.y1?r1.y1:r2.y1;
d.x2 = r1.x2<r2.x2?r1.x2:r2.x2;
d.y2 = r1.y2<r2.y2?r1.y2:r2.y2;
return d;
}
int main()
{
drept r12,r13,r23,r;
freopen(fin,"r",stdin);
for(int i=0;i<NMAX;++i)
scanf("%d %d %d %d",&dr[i].x1,&dr[i].y1,&dr[i].x2,&dr[i].y2);
fclose(stdin);
r12 = inters(dr[0],dr[1]);
r13 = inters(dr[0],dr[2]);
r23 = inters(dr[1],dr[2]);
r = inters(r12,r13);
freopen(fout,"w",stdout);
long long S = arie(dr[0]) + arie(dr[1]) + arie(dr[2]) - arie(r12) - arie(r13) - arie(r23) + arie(r),
P = peri(dr[0]) + peri(dr[1]) + peri(dr[2]) - peri(r12) - peri(r13) - peri(r23) + peri(r);
printf("%Ld %Ld",S,P);
fclose(stdout);
return 0;
}