Cod sursa(job #709062)

Utilizator deneoAdrian Craciun deneo Data 7 martie 2012 17:19:09
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <fstream>
#include <algorithm>
using namespace std;

ifstream fin("reuniune.in");
ofstream fout("reuniune.out");

struct dreptunghi {
    long long x1, x2, y1, y2;
}v[5];

dreptunghi iT(dreptunghi a, dreptunghi b) {
    dreptunghi d;

    d.x1 = max(a.x1, b.x1);
    d.x2 = min(a.x2, b.x2);
    d.y1 = max(a.y1, b.y1);
    d.y2 = min(a.y2, b.y2);

    if((d.x1 > d.x2) || (d.y1 > d.y2))
        d.x1 = d.x2 = d.y1 = d.y2 = 0;

    return d;
}

long long aria(dreptunghi d) {
    return (d.x2 - d.x1) * (d.y2 - d.y1);
}

long long perim(dreptunghi d) {
    return (d.x2 - d.x1 + d.y2 - d.y1) * 2;
}

int main() {
    long long i;
    for(i = 1; i <= 3; ++i)
        fin >> v[i].x1 >> v[i].y1 >> v[i].x2 >> v[i].y2;
    fout << aria(v[1]) + aria(v[2]) + aria(v[3]) - aria(iT(v[1], v[2])) - aria(iT(v[1], v[3])) - aria(iT(v[2], v[3])) + aria(iT(iT(v[1], v[2]), v[3]));
    fout << " ";
    fout << perim(v[1]) + perim(v[2]) + perim(v[3]) - perim(iT(v[1], v[2])) - perim(iT(v[1], v[3])) - perim(iT(v[2], v[3])) + perim(iT(iT(v[1], v[2]), v[3]));
    fout << "\n";
    fout.close();
    return 0;
}