Pagini recente » Cod sursa (job #3182762) | Cod sursa (job #2342172) | Cod sursa (job #1129111) | Cod sursa (job #400203) | Cod sursa (job #485392)
Cod sursa(job #485392)
#include<fstream>
using namespace std;
struct drept{
int x1,y1;
int x2,y2;};
long long ariat,perim;
drept A,B,C;
long long int minim(int a,int b);
long long int maxim(int a,int b);
long long int aria(drept A);
drept intersectie(drept A,drept B);
long long int 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 int min (int x, int y)
{
if (x<y)return x;
return y;
}
long long int max (long long int x, long long int y)
{
if (x>y)return x;
return y;
}
drept intersectie (drept A, drept B)
{
drept C;
C.x1=max(A.x1,B.x1);
C.y1=max(A.y1,B.y1);
C.x2=min(A.x2,B.x2);
C.y2=min(A.y2,B.y2);
if (C.x1>C.x2 || C.y1>C.y2)
C.x1=C.x2=C.y1=C.y2=0;
return C;
}
long long int aria (drept A)
{
return (A.x2-A.x1)*(A.y2-A.y1);
}
long long int perimetru(drept A)
{
return 2*(A.x2-A.x1+A.y2-A.y1);
}