Cod sursa(job #1994673)

Utilizator Neamtu_StefanStefan Neamtu Neamtu_Stefan Data 25 iunie 2017 17:02:35
Problema Reuniune Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
#include <fstream>

using namespace std;

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

struct punct{
    long long x,y;
};

long long aria(punct B, punct A)
{
    return (B.x-A.x)*(B.y-A.y);
}

long long perim(punct A, punct B)
{
    return 2*((B.x-A.x)+(B.y-A.y));
}

struct dreptunghi{
    punct a,b;
    long long arie=0,perimetru=0;
    void calc()
    {
        arie=aria(a,b);
        perimetru=perim(a,b);
    }
};

void citire(dreptunghi &nr)
{
    punct A,B;
    fin >> A.x >> A.y >> B.x >> B.y;

    nr.a=A;
    nr.b=B;

    nr.calc();
}

dreptunghi intersectie(dreptunghi nr1, dreptunghi nr2)
{
    dreptunghi inter;

    inter.a.x=max(nr1.a.x,nr2.a.x);
    inter.b.x=min(nr1.b.x,nr2.b.x);
    inter.a.y=max(nr1.a.y,nr2.a.y);
    inter.b.y=min(nr1.b.y,nr2.b.y);

    inter.calc();

    return inter;
}

int main()
{
    dreptunghi nr1,nr2,nr3;

    citire(nr1);citire(nr2);citire(nr3);

    dreptunghi nr12,nr23,nr13,nr123;

    nr12=intersectie(nr1,nr2);
    nr23=intersectie(nr2,nr3);
    nr13=intersectie(nr1,nr3);
    nr123=intersectie(nr12,nr23);

    fout << nr1.arie+nr2.arie+nr3.arie-nr12.arie-nr23.arie-nr13.arie+nr123.arie << " ";
    fout << nr1.perimetru+nr2.perimetru+nr3.perimetru-nr12.perimetru-nr23.perimetru-nr13.perimetru+nr123.perimetru;

    return 0;
}