Pagini recente » Cod sursa (job #278952) | Cod sursa (job #769822) | Cod sursa (job #1216251) | Cod sursa (job #123804) | Cod sursa (job #1754122)
#include<fstream>
#include<algorithm>
#define f first
#define s second
using namespace std;
int i;
struct drept{
int xf;
int yf;
int xs;
int ys;
};
drept v[5];
long long aria, pm;
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");
void ff(){
int i, nr, j, nr1, w[10], u, st, dr;
pair<int, int> p[10];
for(i = 1; i <= 3; i++){
w[2 * i - 1] = v[i].xf;
w[2 * i] = v[i].xs;
}
sort(w + 1, w + 7);
nr = 2;
for(i = 2; i <= 6; i++){
if(w[i] != w[nr]){
w[++nr] = w[i];
}
}
for(i = 1; i < nr; i++){
nr1 = 0;
for(j = 1; j <= 3; j++){
if(v[j].xf <= w[i] && v[j].xs >= w[i + 1]){
nr1++;
p[nr1].f = v[j].yf;
p[nr1].s = v[j].ys;
}
}
sort(p + 1, p + nr1 + 1);
st = p[1].f;
dr = p[1].s;
for(j = 2; j <= nr1; j++){
if(p[j].f <= dr){
dr = max(p[j].s, dr);
}
else{
if(st <= dr){
pm += 2 * (w[i + 1] - w[i]);
aria += (w[i + 1] - w[i]) * 1LL * (dr - st);
}
st = p[j].f;
dr = p[j].s;
}
}
if(st <= dr){
aria += (w[i + 1] - w[i]) * 1LL * (dr - st);
pm += 2 * (w[i + 1] - w[i]);
}
}
}
int main(){
for(i = 1; i <= 3; i++){
fin>> v[i].xf >> v[i].yf >> v[i].xs >> v[i].ys;
}
ff();
for(i = 1; i <= 3; i++){
swap(v[i].xf, v[i].yf);
swap(v[i].xs, v[i].ys);
}
ff();
fout<< aria / 2 <<" "<< pm <<"\n";
return 0;
}