Pagini recente » Cod sursa (job #1076683) | Cod sursa (job #862390) | Cod sursa (job #1233485) | Cod sursa (job #1442906) | Cod sursa (job #485326)
Cod sursa(job #485326)
#include<fstream>
using namespace std;
struct drept{
int x1,y1;
int x2,y2;};
long long ariat,perim;
drept A,B,C,D,E,F,G;
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);
ariat+=aria(B);
ariat+=aria(C);
perim=perimetru(A)+perimetru(B)+perimetru(C);
D=intersectie(A,B);
E=intersectie(B,C);
F=intersectie(A,C);
ariat-=aria(D);
ariat-=aria(E);
ariat-=aria(F);
perim-=perimetru(D);
perim-=perimetru(E);
perim-=perimetru(F);
G=intersectie(D,C);
perim+=perimetru(G);
ariat+=aria(G);
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);
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=(A.x2-A.x1)+(A.y2-A.y2);
rez*=4;
return rez;
}