Pagini recente » Cod sursa (job #447000) | Cod sursa (job #3004022) | Cod sursa (job #309240) | Cod sursa (job #2658915) | Cod sursa (job #485387)
Cod sursa(job #485387)
#include<fstream>
using namespace std;
struct drept{
int x1,y1;
int x2,y2;};
long long ariat,perim;
drept A,B,C;
int minim(int a,int b);
int maxim(int a,int b);
long long aria(drept A);
drept intersectie(drept A,drept B);
long long perimetru(drept A);
int main()
{
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");
fin>>A.x1>>A.y1>>A.x2>>A.y2;
fin>>B.x1>>B.y1>>B.x2>>B.y2;
fin>>C.x1>>C.y1>>C.x2>>C.y2;
ariat=aria(A)+aria(B)+aria(C)-aria(intersectie(A,B))-aria(intersectie(B,C))-aria(intersectie(A,C))+aria(intersectie(intersectie(A,B),C));
perim=perimetru(A)+perimetru(B)+perimetru(C)-perimetru(intersectie(A,B))-perimetru(intersectie(B,C))-perimetru(intersectie(A,C))+perimetru(intersectie(intersectie(A,B),C));
fout<<ariat<<" "<<perim;
return 0;
}
long long aria(drept A)
{
long long rez=(A.y2-A.y1)*(A.x2-A.x1);
return rez;
}
drept intersectie(drept A,drept B)
{
drept C;
C.x1=maxim(A.x1,B.x1);
C.y1=maxim(A.y1,B.y1);
C.x2=minim(A.x2,B.x2);
C.y2=minim(A.y2,B.y2);
if (C.x1>C.x2 || C.y1>C.y2)
C.x1=C.x2=C.y1=C.y2=0;
return C;
}
int minim(int a,int b)
{
if(a>b)
return b;
else
return a;
}
int maxim(int a,int b)
{
if(a>b)
return a;
else
return b;
}
long long perimetru(drept A)
{
long long rez=2*((A.x2-A.x1)+(A.y2-A.y2));
return rez;
}