Mai intai trebuie sa te autentifici.

Cod sursa(job #981569)

Utilizator crisbodnarCristian Bodnar crisbodnar Data 7 august 2013 15:45:16
Problema Reuniune Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <iostream>
#include <algorithm>
#include <fstream>
#include <vector>

using namespace std;

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

struct drep{int x1, y1, x2, y2;};
int supr, per; drep d[4];

int Arie(drep d)
{
    return (d.x2 - d.x1) * (d.y2 - d.y1);
}

int Per(drep d)
{
    return 2 * (d.x2 - d.x1 + d.y2 - d.y1);
}

drep Inter(drep d1, drep d2)
{
    drep com ;
    com.x1 = max(d1.x1, d2.x1);
    com.y1 = max(d1.y1, d2.y1);
    com.x2 = min(d1.x2, d2.x2);
    com.y2 = min(d1.y2, d2.y2);
    if(com.x1 > com.x2 || com.y2 < com.y1)
        com.x1 = com.x2 = com.y1 = com.y2 = 0;
    return com;
}

int main()
{
    for(int i=1; i<=3; i++)
    {
        fin>>d[i].x1>>d[i].y1>>d[i].x2>>d[i].y2;
        per += 2 * (d[i].x2 - d[i].x1 + d[i].y2 - d[i].y1);
        supr += (d[i].x2 - d[i].x1) * (d[i].y2 - d[i].y1);
    }

    supr = supr - Arie(Inter(d[1], d[2])) - Arie(Inter(d[1], d[3])) - Arie(Inter(d[2], d[3])) + Arie(Inter(Inter(d[1], d[2]), d[3]));
    per = per - Per(Inter(d[1], d[2])) - Per(Inter(d[1], d[3])) - Per(Inter(d[2], d[3])) + Per(Inter(Inter(d[1], d[2]), d[3]));
    fout<<supr<<' '<<per;

    return 0;
}