Pagini recente » Cod sursa (job #2193826) | Cod sursa (job #88161) | Cod sursa (job #1423221) | Cod sursa (job #2307969) | Cod sursa (job #2707701)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("reuniune.in");
ofstream fout ("reuniune.out");
struct dreptunghi{
int x1, y1, x2, y2;
};
struct segment{
int start, finish;
};
segment segm[3];
int comparare(segment a, segment b){
return (a.start < b.start) || (a.start == b.start && a.finish <= b.finish);
}
dreptunghi dr[3];
struct dreptunghi intersectie (struct dreptunghi i, struct dreptunghi j){
struct dreptunghi nou;
nou.x1 = max(i.x1, j.x1);
nou.y1 = max(i.y1, j.y1);
nou.x2 = min(i.x2, j.x2);
nou.y2 = min(i.y2, j.y2);
if(nou.x1 > nou.x2 || nou.y1 > nou.y2){
nou.x1 = nou.y1 = nou.x2 = nou.y2 = 0;
}
return nou;
}
inline long long arie(dreptunghi Z){
return (Z.x2 - Z.x1) * (Z.y2 - Z.y1);
}
inline long long perimetru(dreptunghi Z){
return (Z.x2 - Z.x1 + Z.y2 - Z.y1 ) * 2;
}
int main()
{
for(int i = 0; i < 3; i++){
fin >> dr[i].x1 >> dr[i].y1 >> dr[i].x2 >> dr[i].y2;
}
//afisez aria
//principiul includerii si excluderii
fout << arie(dr[0]) + arie(dr[1]) + arie(dr[2]) - arie(intersectie(dr[0], dr[1])) - arie(intersectie(dr[0], dr[2])) - arie(intersectie(dr[1], dr[2])) + arie(intersectie(intersectie(dr[0], dr[1]), dr[2])) ;
fout << ' ';
fout << perimetru(dr[0]) + perimetru(dr[1]) + perimetru(dr[2]) - perimetru(intersectie(dr[0], dr[1])) - perimetru(intersectie(dr[0], dr[2])) - perimetru(intersectie(dr[1], dr[2])) + perimetru(intersectie(intersectie(dr[0], dr[1]), dr[2])) ;
//afisez perimetrul
}