Cod sursa(job #2812513)

Utilizator cdenisCovei Denis cdenis Data 4 decembrie 2021 17:09:53
Problema Reuniune Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <iostream>
#include <fstream>

using namespace std;

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

struct dreptunghi
{
    struct punct
    {
        long long x,y;
    }st,dr;
}dr[4];

long long Ar(dreptunghi dr)
{
    return (dr.dr.x-dr.st.x)*(dr.dr.y-dr.st.y);
}

long long Pr(dreptunghi dr)
{
    return 2*((dr.dr.x-dr.st.x)+(dr.dr.y-dr.st.y));
}

dreptunghi Int(dreptunghi dr1, dreptunghi dr2)
{
    dreptunghi dr;
    dr.st.x=max(dr1.st.x,dr2.st.x);
    dr.st.y=max(dr1.st.y,dr2.st.y);
    dr.dr.x=min(dr1.dr.x,dr2.dr.x);
    dr.dr.y=min(dr1.dr.y,dr2.dr.y);
    if(dr.dr.x<dr.st.x || dr.dr.y<dr.st.y)
    {
        dr.st.x=0;
        dr.st.y=0;
        dr.dr.x=0;
        dr.dr.y=0;
    }
    return dr;
}

long long A,P;

int main()
{
    for(int i=1;i<=3;i++)
        fin >> dr[i].st.x >> dr[i].st.y >> dr[i].dr.x >> dr[i].dr.y;
    A=Ar(dr[1])+Ar(dr[2])+Ar(dr[3])-Ar(Int(dr[1],dr[2]))-Ar(Int(dr[2],dr[3]))-Ar(Int(dr[3],dr[1]))+Ar(Int(Int(dr[1],dr[2]),dr[3]));
    P=Pr(dr[1])+Pr(dr[2])+Pr(dr[3])-Pr(Int(dr[1],dr[2]))-Pr(Int(dr[2],dr[3]))-Pr(Int(dr[3],dr[1]))+Pr(Int(Int(dr[1],dr[2]),dr[3]));
    fout << A << " " << P;
    return 0;
}