Pagini recente » Cod sursa (job #2451253) | Cod sursa (job #214036) | Cod sursa (job #3041253) | Cod sursa (job #200641) | Cod sursa (job #2108247)
#include <bits/stdc++.h>
using namespace std;
ifstream in("reuniune.in");
ofstream out("reuniune.out");
#define x first
#define y second
const int N = 3;
struct Dreptunghi
{
pair<int, int> sus, jos;
Dreptunghi(){}
Dreptunghi(pair<int, int> _sus, pair<int, int> _jos) : sus(_sus), jos(_jos) {}
Dreptunghi intersectie(const Dreptunghi& other)
{
Dreptunghi ans;
ans.jos.x = max(jos.x, other.jos.x);
ans.jos.y = max(jos.y, other.jos.y);
ans.sus.x = min(sus.x, other.sus.x);
ans.sus.y = min(sus.y, other.sus.y);
if(ans.jos.x > ans.sus.x || ans.jos.y > ans.sus.y)
ans = Dreptunghi({0, 0}, {0, 0});
return ans;
}
long long arie()
{
return 1LL * (sus.x - jos.x) * (sus.y - jos.y);
}
long long perimetru()
{
return 2LL * (sus.x - jos.x) + 2LL * (sus.y - jos.y);
}
};
Dreptunghi d[2 * N + 2];
long long ansArie, ansPer;
int main()
{
int len = N;
for(int i = 1; i <= N; i++)
{
pair<int, int> sus, jos;
in >> jos.x >> jos.y >> sus.x >> sus.y;
d[i] = Dreptunghi(sus, jos);
}
for(int i = 1; i <= N; i++)
for(int j = i + 1; j <= N; j++)
d[++len] = d[i].intersectie(d[j]);
d[++len] = d[1].intersectie(d[2]).intersectie(d[3]);
for(int i = 1; i < len; i++)
if(i <= 3)
ansArie += d[i].arie();
else ansArie -= d[i].arie();
ansArie += d[len].arie();
for(int i = 1; i < len; i++)
if(i <= 3)
ansPer += d[i].perimetru();
else ansPer -= d[i].perimetru();
ansPer += d[len].perimetru();
out << ansArie << ' ' << ansPer << '\n';
return 0;
}