Cod sursa(job #1610774)

Utilizator PraetorGrigorosoaia Florin Praetor Data 23 februarie 2016 18:43:11
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.39 kb
#include<fstream>

using namespace std;

FILE*in;
ofstream out("reuniune.out");

struct dreptunghi
{
    long long int xjos, yjos;
    long long int xsus, ysus;
}A, B, C, IN_AB, IN_BC, IN_AC, IN_ABC;

void intersectie(dreptunghi M, dreptunghi N, dreptunghi &P)
{
    P.xjos=max(M.xjos, N.xjos);
    P.yjos=max(M.yjos, N.yjos);
    P.xsus=min(M.xsus, N.xsus);
    P.ysus=min(M.ysus, N.ysus);

    if ((P.xsus < P.xjos) || (P.ysus < P.yjos))
        P.xjos=P.xsus=P.yjos=P.ysus=0;
}

long long int arie(dreptunghi M)
{
    return (M.xsus-M.xjos)*(M.ysus-M.yjos);
}

long long int perimetru(dreptunghi M)
{
    return 2*(M.xsus-M.xjos)+2*(M.ysus-M.yjos);
}

void read()
{
    in=fopen("reuniune.in", "r");

    fscanf(in, "%lld%lld%lld%lld", &A.xjos, &A.yjos, &A.xsus, &A.ysus);
    fscanf(in, "%lld%lld%lld%lld", &B.xjos, &B.yjos, &B.xsus, &B.ysus);
    fscanf(in, "%lld%lld%lld%lld", &C.xjos, &C.yjos, &C.xsus, &C.ysus);
}

void solve()
{
    intersectie(A, B, IN_AB);
    intersectie(A, C, IN_AC);
    intersectie(B, C, IN_BC);
    intersectie(IN_AB, C, IN_ABC);
}

void show()
{
    out<<arie(A)+arie(B)+arie(C)-arie(IN_AB)-arie(IN_AC)-arie(IN_BC)+arie(IN_ABC)<<" ";
    out<<perimetru(A)+perimetru(B)+perimetru(C)-perimetru(IN_AB)-perimetru(IN_AC)-perimetru(IN_BC)+perimetru(IN_ABC);
}

int main()
{
    read();
    solve();
    show();

    return 0;
}