Pagini recente » Cod sursa (job #2233564) | Cod sursa (job #981938) | Cod sursa (job #2139848) | Cod sursa (job #1108263) | Cod sursa (job #1212545)
#include <iostream>
#include <set>
#include <vector>
using namespace std;
int DX[3][2], DY[3][2];
int INF = 1000000000 + 7;
set<int> sx, sy;
int N, M;
vector<int> px, py;
int v[10][10];
int main() {
freopen("reuniune.in", "r", stdin);
freopen("reuniune.out", "w", stdout);
sx.insert(INF); sy.insert(INF);
sx.insert(-INF); sy.insert(-INF);
for (int i = 0; i < 3; ++i) {
scanf("%d %d %d %d", &DX[i][0], &DY[i][0], &DX[i][1], &DY[i][1]);
sx.insert(DX[i][0]);
sx.insert(DX[i][1]);
sy.insert(DY[i][0]);
sy.insert(DY[i][1]);
}
px = vector<int>(sx.begin(), sx.end());
py = vector<int>(sy.begin(), sy.end());
N = px.size(); M = py.size();
for (int i = 0; i + 1< N; ++i)
for (int j = 0; j + 1 < M; ++j)
for (int k = 0; k < 3; ++k)
if (2LL * DX[k][0] < px[i] + px[i+1] && px[i] + px[i+1] < 2LL * DX[k][1])
if (2LL * DY[k][0] < py[j] + py[j+1] && py[j] + py[j+1] < 2LL * DY[k][1]) v[i][j] = 1;
long long A = 0, P = 0;
for (int i = 0; i + 1 < N; ++i)
for (int j = 0; j + 1 < M; ++j) if (v[i][j]) {
long long w = px[i+1] - px[i];
long long h = py[j+1] - py[j];
A += w * h;
P += ((v[i-1][j] == 0) + (v[i+1][j] == 0)) * h;
P += ((v[i][j-1] == 0) + (v[i][j+1] == 0)) * w;
}
printf("%lld %lld\n", A, P);
return 0;
}