Pagini recente » Cod sursa (job #295675) | Cod sursa (job #1437375) | Cod sursa (job #3150151) | Cod sursa (job #2122175) | Cod sursa (job #1497076)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");
struct data{
long long x;
long long y;
long long xx;
long long yy;
}v[5];
long long arie(long long x, long long y, long long xx, long long yy) {
if (xx <= x || yy <= y)
return 0;
long long l1 = xx - x;
long long l2 = yy - y;
return 1LL * l1 * l2;
}
long long perimetru(long long x, long long y, long long xx, long long yy){
if (xx <= x || yy <= y)
return 0;
long long l1 = xx - x;
long long l2 = yy - y;
return 2 * (l1 + l2);
}
long long sola, solp;
void intersectie(long long a, long long b){
data sol;
sol.x = max(v[a].x, v[b].x);
sol.xx = min(v[a].xx, v[b].xx);
sol.y = max(v[a].y, v[b].y);
sol.yy = min(v[a].yy, v[b].yy);
solp -= perimetru(sol.x, sol.y, sol.xx, sol.yy);
sola -= arie(sol.x, sol.y, sol.xx, sol.yy);
}
void intersectie2() {
data sol;
sol.x = max(v[1].x, v[2].x);
sol.xx = min(v[1].xx, v[2].xx);
sol.y = max(v[1].y, v[2].y);
sol.yy = min(v[1].yy, v[2].yy);
sol.x = max(sol.x, v[3].x);
sol.xx = min(sol.xx, v[3].xx);
sol.y = max(sol.y, v[3].y);
sol.yy = min(sol.yy, v[3].yy);
solp += perimetru(sol.x, sol.y, sol.xx, sol.yy);
sola += arie(sol.x, sol.y, sol.xx, sol.yy);
}
int main() {
for (int i = 1; i <= 3; i++) {
fin >> v[i].x >> v[i].y >> v[i].xx >> v[i].yy;
solp += perimetru(v[i].x, v[i].y, v[i].xx, v[i].yy);
sola += arie(v[i].x, v[i].y, v[i].xx, v[i].yy);
}
intersectie(1, 2);
intersectie(1, 3);
intersectie(2, 3);
intersectie2();
fout << sola << " " << solp << "\n";
return 0;
}