Pagini recente » Cod sursa (job #177679) | Cod sursa (job #3260766) | Cod sursa (job #2704775) | Cod sursa (job #1265976) | Cod sursa (job #2194977)
#include <fstream>
using namespace std;
ifstream f("reuniune.in");
ofstream g("reuniune.out");
long long perimetru;
long long arie;
struct
{
pair <int, int> P2, P4;
}D1, D2, D3, D4;
void Citire()
{
f >> D1.P4.first;
f >> D1.P4.second;
f >> D1.P2.first;
f >> D1.P2.second;
f >> D2.P4.first;
f >> D2.P4.second;
f >> D2.P2.first;
f >> D2.P2.second;
f >> D3.P4.first;
f >> D3.P4.second;
f >> D3.P2.first;
f >> D3.P2.second;
D4.P2.first = D1.P2.first;
D4.P2.second = D1.P2.second;
D4.P4.first = D1.P4.first;
D4.P4.second = D1.P4.second;
}
int get_max(int a, int b)
{
if(a > b)
return a;
return b;
}
int get_min(int a, int b)
{
if(a > b)
return b;
return a;
}
void INTERSECTIE1()
{
if(D1.P4.first >= D2.P2.first)
{
return;
}
if(D1.P2.first <= D2.P4.first)
{
return;
}
if(D1.P2.second <= D2.P4.second)
{
return;
}
if(D1.P4.second >= D2.P2.second)
{
return;
}
D1.P2.first = get_min(D1.P2.first, D2.P2.first);
D1.P2.second = get_min(D1.P2.second, D2.P2.second);
D1.P4.first = get_max(D1.P4.first, D2.P4.first);
D1.P4.second = get_max(D1.P4.second, D2.P4.second);
arie -= (D1.P2.first - D1.P4.first) * (D1.P2.second - D1.P4.second);
perimetru -= ((D1.P2.first - D1.P4.first) * 2 + (D1.P2.second - D1.P4.second) * 2);
}
void INTERSECTIE2()
{
if(D2.P4.first >= D3.P2.first)
{
return;
}
if(D2.P2.first <= D3.P4.first)
{
return;
}
if(D2.P2.second <= D3.P4.second)
{
return;
}
if(D2.P4.second >= D3.P2.second)
{
return;
}
D2.P2.first = get_min(D2.P2.first, D3.P2.first);
D2.P2.second = get_min(D2.P2.second, D3.P2.second);
D2.P4.first = get_max(D2.P4.first, D3.P4.first);
D2.P4.second = get_max(D2.P4.second, D3.P4.second);
arie -= (D2.P2.first - D2.P4.first) * (D2.P2.second - D2.P4.second);
perimetru -= ((D2.P2.first - D2.P4.first) * 2 + (D2.P2.second - D2.P4.second) * 2);
}
void INTERSECTIE3()
{
if(D4.P4.first >= D3.P2.first)
{
return;
}
if(D4.P2.first <= D3.P4.first)
{
return;
}
if(D4.P2.second <= D3.P4.second)
{
return;
}
if(D4.P4.second >= D3.P2.second)
{
return;
}
D4.P2.first = get_min(D4.P2.first, D3.P2.first);
D4.P2.second = get_min(D4.P2.second, D3.P2.second);
D4.P4.first = get_max(D4.P4.first, D3.P4.first);
D4.P4.second = get_max(D4.P4.second, D3.P4.second);
arie -= (D4.P2.first - D4.P4.first) * (D4.P2.second - D4.P4.second);
perimetru -= ((D4.P2.first - D4.P4.first) * 2 + (D4.P2.second - D4.P4.second) * 2);
}
void INTERSECTIE4()
{
if(D1.P4.first >= D3.P2.first)
{
return;
}
if(D1.P2.first <= D3.P4.first)
{
return;
}
if(D1.P2.second <= D3.P4.second)
{
return;
}
if(D1.P4.second >= D3.P2.second)
{
return;
}
D1.P2.first = get_min(D1.P2.first, D3.P2.first);
D1.P2.second = get_min(D1.P2.second, D3.P2.second);
D1.P4.first = get_max(D1.P4.first, D3.P4.first);
D1.P4.second = get_max(D1.P4.second, D3.P4.second);
arie += (D1.P2.first - D1.P4.first) * (D1.P2.second - D1.P4.second);
perimetru += (D1.P2.first - D1.P4.first) * 2 + (D1.P2.second - D1.P4.second) * 2;
}
int main()
{
Citire();
arie = (D1.P2.first - D1.P4.first) * (D1.P2.second - D1.P4.second) + (D2.P2.first - D2.P4.first) * (D2.P2.second - D2.P4.second) + (D3.P2.first - D3.P4.first) * (D3.P2.second - D3.P4.second);
perimetru = (D1.P2.first - D1.P4.first) * 2 + (D1.P2.second - D1.P4.second) * 2 + (D2.P2.first - D2.P4.first) * 2 + (D2.P2.second - D2.P4.second) * 2 + (D3.P2.first - D3.P4.first) * 2 + (D3.P2.second - D3.P4.second) * 2;
INTERSECTIE1();
INTERSECTIE2();
INTERSECTIE3();
INTERSECTIE4();
g << arie << " ";
g << perimetru;
}