Cod sursa(job #1734876)

Utilizator Andrei_CotorAndrei Cotor Andrei_Cotor Data 28 iulie 2016 14:15:41
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
//(c) 2016.... nevermind
#include <fstream>
using namespace std;
ifstream fi("reuniune.in");
ofstream fo("reuniune.out");
typedef struct sqrs{long long l1,c1,l2,c2;} SQRS;
SQRS p1,p2,p3,p1_2,p1_3,p2_3,p1_2_3;
long long arie,per;

void sqrs_inters(SQRS &rez, SQRS a, SQRS b)
{
    rez.l1=max(a.l1,b.l1);
    rez.c1=max(a.c1,b.c1);
    rez.l2=min(a.l2,b.l2);
    rez.c2=min(a.c2,b.c2);
    if(rez.l1>rez.l2 || rez.c1>rez.c2)
    {
        rez.l1=0;
        rez.c1=0;
        rez.l2=0;
        rez.c2=0;
    }
}

long long surf(SQRS a)
{
    return (a.l2-a.l1)*(a.c2-a.c1);
}

long long peri(SQRS a)
{
    return 2*((a.l2-a.l1)+(a.c2-a.c1));
}

int main()
{
    fi>>p1.l1>>p1.c1>>p1.l2>>p1.c2;
    fi>>p2.l1>>p2.c1>>p2.l2>>p2.c2;
    fi>>p3.l1>>p3.c1>>p3.l2>>p3.c2;
    sqrs_inters(p1_2,p1,p2);
    sqrs_inters(p1_3,p1,p3);
    sqrs_inters(p2_3,p2,p3);
    sqrs_inters(p1_2_3,p1_2,p3);
    arie=surf(p1)+surf(p2)+surf(p3)-surf(p1_2)-surf(p2_3)-surf(p1_3)+surf(p1_2_3);
    per=peri(p1)+peri(p2)+peri(p3)-peri(p1_2)-peri(p2_3)-peri(p1_3)+peri(p1_2_3);
    fo<<arie<<" "<<per<<"\n";
    fi.close();
    fo.close();
    return 0;
}