Pagini recente » Cod sursa (job #459491) | Cod sursa (job #2518556) | Cod sursa (job #3001221) | Cod sursa (job #2782110) | Cod sursa (job #1377081)
#include<fstream>
using namespace std;
ifstream f("reuniune.in");
ofstream g("reuniune.out");
struct drept{
int64_t x1,y1,x2,y2;
drept(){
x1=x2=y1=y2=0;
}
};
drept v[4];
uint64_t Aria_reuniune, Perimetru_reuniune;
bool ID( drept a,drept b)
{
if(a.x1 == b.x1 && a.x2 == b.x2 && a.y1 == b.y1 && a.y2 == b.y2 )
return true;
return false;
}
drept intersectia ( drept a, drept b)
{
drept inter;
inter.x1= max ( a.x1 , b.x1 );
inter.y1= min ( a.y1 , b.y1 );
inter.x2= min ( a.x2 , b.x2 );
inter.y2= max ( a.y2 , b.y2 );
if ( ID( inter, a) || ID(inter , b) )
return drept();
return inter;
}
uint64_t Ar(drept a)
{
uint64_t aaa=(a.x2-a.x1)*(a.y1-a.y2);
return aaa;
}
uint64_t Pe(drept a)
{
return 2 * ( ( a.x2 - a.x1 ) + (a.y1 - a.y2) ) ;
}
int main()
{
drept I1,I2,I3,I4;
for(char i=1;i<=3;i++)
f>>v[i].x1>>v[i].y2>>v[i].x2>>v[i].y1;
I1 = intersectia ( v[1], v[2] );
I2 = intersectia ( v[2], v[3] );
I3 = intersectia ( v[1], v[3] );
I4 = intersectia ( I3, v[2]);
Aria_reuniune = Ar(v[1])+Ar(v[2])+Ar(v[3])-Ar(I1)-Ar(I2)-Ar(I3)+Ar(I4);
Perimetru_reuniune = Pe(v[1])+Pe(v[2])+Pe(v[3])-Pe(I1)-Pe(I2)-Pe(I3)+Pe(I4);
g<<Aria_reuniune<<" "<<Perimetru_reuniune;
return 0;
}