Pagini recente » Cod sursa (job #3252720) | Cod sursa (job #2774872) | Cod sursa (job #2163567) | Cod sursa (job #127666) | Cod sursa (job #190440)
Cod sursa(job #190440)
#include<stdio.h>
struct pct {
long x,y;
};
struct dr{
pct p[5];
long a,per;
};
int isin(dr d,pct p){
return (p.x>=d.p[1].x&&p.x<=d.p[2].x&&p.y>=d.p[1].y&&p.y<=d.p[3].y);
}
long ariai(dr a,dr b, long &pr){
long dx=0L,dy=0L;
if(a.p[1].x<=b.p[1].x&&b.p[1].x<=a.p[2].x&&a.p[2].x<b.p[2].x)
dx=a.p[2].x-b.p[1].x;
if(a.p[1].x<=b.p[1].x&&b.p[2].x<=a.p[2].x)
dx=b.p[2].x-b.p[1].x;
if(a.p[1].x>=b.p[1].x&&b.p[1].x>=a.p[2].x&&a.p[2].x>b.p[2].x)
dx=b.p[2].x-a.p[1].x;
if(a.p[1].y<=b.p[1].y&&b.p[1].y<=a.p[3].y&&a.p[3].y<b.p[3].y)
dy=a.p[3].y-b.p[1].y;
if(a.p[1].y<=b.p[1].y&&b.p[3].y<=a.p[3].y)
dy=b.p[3].y-b.p[1].y;
if(a.p[1].y>=b.p[1].y&&b.p[3].y>=a.p[1].y&&a.p[3].y>b.p[3].y)
dy=b.p[3].y-a.p[1].y;
pr=dx*2+dy*2;
return (long)dx*dy;
}
int main(){
dr v[4];
freopen("reuniune.in","r",stdin);
freopen("reuniune.out","w",stdout);
int i,j,pi;
for(i=1;i<=3;i++){
scanf("%ld%ld%ld%ld",&v[i].p[1].x,&v[i].p[1].y,&v[i].p[3].x,&v[i].p[3].y);
v[i].p[2].x=v[i].p[3].x;v[i].p[2].y=v[i].p[1].y;
v[i].p[4].x=v[i].p[1].x;v[i].p[4].y=v[i].p[3].y;
v[i].a=(v[i].p[2].x-v[i].p[1].x)*(v[i].p[3].y-v[i].p[1].y);
v[i].per=2*(v[i].p[2].x-v[i].p[1].x)+2*(v[i].p[3].y-v[i].p[1].y);
}
long a,per;
//intersectiile
a=per=0L;
long m[4][4]={{0L}},pr=0L;
for(i=1;i<4;i++) { a+=v[i].a; per+=v[i].per;}
for(i=1;i<3;i++)
for(j=i+1;j<=3;j++){
m[i][j]=ariai(v[i],v[j],pr);
m[j][i]=pr;
a-=m[i][j];
per-=m[j][i];
}
printf("%ld %ld",a,per);
return 0;
}