Pagini recente » Cod sursa (job #1803710) | Cod sursa (job #2606013) | Cod sursa (job #2195010) | Cod sursa (job #1491482) | Cod sursa (job #2874586)
#include <iostream>
#include <fstream>
#include <cmath>
#define int long long
using namespace std;
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");
struct dreptunghi{ int i1, j1, i2, j2; };
int arie(dreptunghi A){ return abs(A.i1 - A.i2) * abs(A.j1 - A.j2); }
int perim(dreptunghi A){ return 2 * (abs(A.i1 - A.i2) + abs(A.j1 - A.j2)); }
dreptunghi intersect(dreptunghi A, dreptunghi B){
int x1_intersect = max(A.i1, B.i1);
int y1_intersect = max(A.j1, B.j1);
int x2_intersect = min(A.i2, B.i2);
int y2_intersect = min(A.j2, B.j2);
if(x1_intersect > x2_intersect || y1_intersect > y2_intersect) return {-1, -1, -1, -1};
return {x1_intersect, y1_intersect, x2_intersect, y2_intersect};
}
signed main(){
dreptunghi A, B, C;
fin >> A.i1 >> A.j1 >> A.i2 >> A.j2;
fin >> B.i1 >> B.j1 >> B.i2 >> B.j2;
fin >> C.i1 >> C.j1 >> C.i2 >> C.j2;
dreptunghi AB = intersect(A, B);
dreptunghi BC = intersect(B, C);
dreptunghi AC = intersect(A, C);
dreptunghi ABC = intersect(AB, C);
int ARIE = arie(A) + arie(B) + arie(C) - arie(AB) - arie(BC) - arie(AC) + arie(ABC);
int PERIM = perim(A) + perim(B) + perim(C) - perim(AB) - perim(BC) - perim(AC) + perim(ABC);
fout << ARIE << ' ' << PERIM;
return 0;
}