Pagini recente » Cod sursa (job #1632192) | Cod sursa (job #1862230) | Cod sursa (job #113580) | Cod sursa (job #634151) | Cod sursa (job #3223084)
#include <fstream>
using namespace std;
#define int long long
struct el
{
int x1, y1, x2, y2;
};
ifstream in("reuniune.in");
ofstream out("reuniune.out");
el v[10];
el w[10];
int a, p;
signed main()
{
for(int i = 1; i<=3; i++)
{
in>>v[i].x1>>v[i].y1>>v[i].x2>>v[i].y2;
a += (v[i].x2 - v[i].x1) * (v[i].y2 - v[i].y1);
p += (v[i].x2 - v[i].x1) * 2 + (v[i].y2 - v[i].y1) * 2;
}
int x1, y1, x2, y2;
int cnt = 0;
for(int i = 1; i<=3; i++)
{
for(int j = i + 1; j<=3; j++)
{
x1 = max(v[i].x1, v[j].x1);
x2 = min(v[i].x2, v[j].x2);
y1 = max(v[i].y1, v[j].y1);
y2 = min(v[i].y2, v[j].y2);
if(x1 <= x2 && y1 <= y2)
{
a -= (x2 - x1) * (y2 - y1);
p -= (x2 - x1) * 2 + (y2 - y1) * 2;
}
cnt++;
w[cnt] = {x1, y1, x2, y2};
//out<<x1<<" "<<y1<<" -> "<<x2<<" "<<y2<<'\n';
}
}
if(w[3].x1 <= w[3].x2 && w[3].y1 <= w[3].y2)
{
//intersectia la toate 3
x1 = max(v[1].x1, w[3].x1);
x2 = min(v[1].x2, w[3].x2);
y1 = max(v[1].y1, w[3].y1);
y2 = min(v[1].y2, w[3].y2);
if(x1 <= x2 && y1 <= y2)
{
a += (x2 - x1) * (y2 - y1);
p += (x2 - x1) * 2 + (y2 - y1) * 2;
}
}
out<<a<<" "<<p;
return 0;
}