Pagini recente » Cod sursa (job #822939) | Cod sursa (job #3037937) | Cod sursa (job #672297) | Cod sursa (job #578081) | Cod sursa (job #1762544)
#include<stdio.h>
#include<algorithm>
using namespace std;
FILE *f1=fopen("reuniune.in","r");
FILE *f2=fopen("reuniune.out","w");
long long xp1[3],yp1[3],xp2[3],yp2[3],xr1,yr1,xr2,yr2,arie,perim,i,sw=0;
void intersectie(int i,int j){
if (yp2[i]<yp1[j]) {
sw=1;
return;
}
if (yp1[i]>yp2[j]) {
sw=1;
return;
}
if (xp2[i]<xp1[j]) {
sw=1;
return;
}
if (xp1[i]>xp2[j]) {
sw=1;
return;
}
yr2=min(yp2[i],yp2[j]);
yr1=max(yp1[i],yp1[j]);
xr2=min(xp2[i],xp2[j]);
xr1=max(xp1[i],xp1[j]);
arie=arie-(xr2-xr1)*(yr2-yr1);
perim=perim-2*(xr2-xr1)-2*(yr2-yr1);
}
void intersectie3(){
int x1f,y1f,x2f,y2f;
if (sw==1) return;
if (yr2<yp1[0]) {
return;
}
if (yr1>yp2[0]) {
return;
}
if (xr2<xp1[0]) {
return;
}
if (xr1>xp2[0]) {
return;
}
y2f=min(yr2,yp2[0]);
y1f=max(yr1,yp1[0]);
x2f=min(xr2,xp2[0]);
x1f=max(xr1,xp1[0]);
arie=arie+(x2f-x1f)*(y2f-y1f);
perim=perim+2*(x2f-x1f)+2*(y2f-y1f);
}
int main(){
for (i=0;i<=2;i++){
fscanf(f1,"%lld%lld%lld%lld",&xp1[i],&yp1[i],&xp2[i],&yp2[i]);
arie=arie+(xp2[i]-xp1[i])*(yp2[i]-yp1[i]);
perim=perim+2*(xp2[i]-xp1[i])+2*(yp2[i]-yp1[i]);
}
intersectie(0,1);
sw=0;
intersectie(0,2);
sw=0;
intersectie(1,2);
intersectie3();
fprintf(f2,"%lld %lld",arie,perim);
fclose(f1);
fclose(f2);
return 0;
}