Cod sursa(job #2683575)

Utilizator StefanaBarilaBarila Stefana StefanaBarila Data 11 decembrie 2020 17:08:44
Problema Reuniune Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.13 kb
#include <fstream>

using namespace std;

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

struct dreptunghi{
int x1, y1, x2, y2;
}d1, d2, d3;

void intersectie (int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int &ix1, int &iy1, int &ix2, int &iy2)
{
    int x=1;
    if (x1>=x3 && x1<=x4)
    {
        ix1=x1;
    }
    else
    {
        if (x3>=x1 && x3<=x2)
            ix1=x3;
        else
        {
            x=0;
        }
    }

    if (x2>=x3 && x2<=x4)
    {
        ix2=x2;
    }
    else
    {
        if (x4>=x1 && x4<=x2)
            ix2=x4;
        else
        {
            x=0;
        }
    }


    if (y1>=y3 && y1<=y4)
    {
        iy1=y1;
    }
    else
    {
        if (y3>=y1 && y3<=y2)
            iy1=y3;
        else
        {
            x=0;
        }
    }

    if (y2>=y3 && y2<=y4)
    {
        iy2=y2;
    }
    else
    {
        if (y4>=y1 && y4<=y2)
            iy2=y4;
        else
        {
            x=0;
        }
    }
    if (x==0)
    {
        ix1=0;
        iy1=0;
        ix2=0;
        iy2=0;
    }
}

int main()
{
    int a, p, ix1, iy1, ix2, iy2, x, y, z, t;
    fin>>d1.x1>>d1.y1>>d1.x2>>d1.y2 >>d2.x1>>d2.y1>>d2.x2>>d2.y2 >>d3.x1>>d3.y1>>d3.x2>>d3.y2;
    a=(d1.x2-d1.x1)*(d1.y2-d1.y1) + (d2.x2-d2.x1)*(d2.y2-d2.y1) + (d3.x2-d3.x1)*(d3.y2-d3.y1);
    p=( (d1.x2-d1.x1)+(d1.y2-d1.y1) + (d2.x2-d2.x1)+(d2.y2-d2.y1) + (d3.x2-d3.x1)+(d3.y2-d3.y1) )*2;
    intersectie(d1.x1, d1.y1, d1.x2, d1.y2, d2.x1, d2.y1, d2.x2, d2.y2, ix1, iy1, ix2, iy2);
    a-= (ix2-ix1)*(iy2-iy1);
    p-= ( (ix2-ix1)+(iy2-iy1) )*2;

    intersectie(d1.x1, d1.y1, d1.x2, d1.y2, d3.x1, d3.y1, d3.x2, d3.y2, ix1, iy1, ix2, iy2);
    a-= (ix2-ix1)*(iy2-iy1);
    p-= ( (ix2-ix1)+(iy2-iy1) )*2;

    intersectie(d3.x1, d3.y1, d3.x2, d3.y2, d2.x1, d2.y1, d2.x2, d2.y2, ix1, iy1, ix2, iy2);
    a-= (ix2-ix1)*(iy2-iy1);
    p-= ( (ix2-ix1)+(iy2-iy1) )*2;

    intersectie (ix1, iy1, ix2, iy2, d1.x1, d1.y1, d1.x2, d1.y2, x, y, z, t);
    a+= (z-x)*(t-y);
    p+= ( (z-x)+(t-y) )*2;

    fout<<a<<" "<<p;
    return 0;
}