Pagini recente » Cod sursa (job #928367) | Cod sursa (job #252367) | Cod sursa (job #49339) | Cod sursa (job #2991001) | Cod sursa (job #166730)
Cod sursa(job #166730)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
typedef struct {
long long X0, Y0, X1, Y1;
} Dreptunghi;
Dreptunghi d1, d2, d3;
long long arie(Dreptunghi d) {
return (d.X1 - d.X0) * (d.Y1 - d.Y0);
}
long long perimetru(Dreptunghi d) {
return 2*(d.X1 - d.X0) +
2*(d.Y1 - d.Y0);
}
Dreptunghi intersectie(Dreptunghi a, Dreptunghi b) {
if ((a.X1 < b.X0) || (b.X1 < a.X0) ||
(a.Y1 < b.Y0) || (b.Y1 < a.Y0)) {
Dreptunghi d = {0, 0, 0, 0};
return d;
}
long long vah1[] = {a.X0, a.X1, b.X0, b.X1};
sort(vah1, vah1+ 4);
long long vah2[] = {a.Y0, a.Y1, b.Y0, b.Y1};
sort(vah2, vah2 + 4);
Dreptunghi d = {vah1[1], vah2[1], vah1[2], vah2[2]};
return d;
}
int main(int argc, char *argv[]) {
ifstream fin("reuniune.in");
fin >> d1.X0 >> d1.Y0 >> d1.X1 >> d1.Y1;
fin >> d2.X0 >> d2.Y0 >> d2.X1 >> d2.Y1;
fin >> d3.X0 >> d3.Y0 >> d3.X1 >> d3.Y1;
fin.close();
//cout << arie(d2) << " " << arie(d3) << endl;
//cout << arie(d2) + arie(d3) - arie(intersectie(d2, d3)) << endl;
//cout << perimetru(d2) + perimetru(d3) - perimetru(intersectie(d2, d3)) << endl;
ofstream fout("reuniune.out");
fout << arie(d1) + arie(d2) + arie(d3)
- arie(intersectie(d1, d2)) - arie(intersectie(d2, d3)) - arie(intersectie(d1, d3))
+ arie(intersectie(intersectie(d1, d2), d3)) << " ";
fout << perimetru(d1) + perimetru(d2) + perimetru(d3)
- perimetru(intersectie(d1, d2)) - perimetru(intersectie(d2, d3)) - perimetru(intersectie(d1, d3))
+ perimetru(intersectie(intersectie(d1, d2), d3)) << endl;
fout.close();
return 0;
}