Cod sursa(job #1134773)

Utilizator radarobertRada Robert Gabriel radarobert Data 6 martie 2014 21:22:11
Problema Reuniune Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 3.73 kb
#include <fstream>

using namespace std;

long long x1[10], x2[10], y1[10], y2[10];

int main()
{long long a = 0, p = 0;
    ifstream in("reuniune.in");
    ofstream out("reuniune.out");
    in >> x1[1] >> y1[1] >> x2[1] >> y2[1];
    in >> x1[2] >> y1[2] >> x2[2] >> y2[2];
    in >> x1[3] >> y1[3] >> x2[3] >> y2[3];
    if ((x1[2] < x2[1]) && (x1[1] < x2[2]))
    {
        if (x1[2] > x1[1])
            x1[4] = x1[2], x1[5] = x1[2];
        else
            x1[4] = x1[1], x1[5] = x1[1];
        if (x2[2] < x2[1])
            x2[4] = x2[2], x2[5] = x2[2];
        else
            x2[4] = x2[1], x2[5] = x2[1];
    }
    else
    {
        x1[4] = 0;
        x2[4] = 0;
        x1[5] = 0;
        x2[5] = 0;
    }
    if ((y1[2] < y2[1]) && (y1[1] < y2[2]))
    {
        if (y1[2] > y1[1])
            y1[4] = y1[2], y1[5] = y1[2];
        else
            y1[4] = y1[1], y1[5] = y1[1];
        if (y2[2] < y2[1])
            y2[4] = y2[2], y2[5] = y2[2];
        else
            y2[4] = y2[1], y2[5] = y2[1];
    }
    else
    {
        y1[4] = 0;
        y2[4] = 0;
        y1[5] = 0;
        y2[5] = 0;
    }

    if ((x1[3] < x2[4]) && (x1[4] < x2[3]))
    {
        if (x1[3] > x1[4])
            x1[4] = x1[3];
        else
            x1[4] = x1[4];
        if (x2[3] < x2[4])
            x2[4] = x2[3];
        else
            x2[4] = x2[4];
    }
    else
    {
        x1[4] = 0;
        x2[4] = 0;
    }
    if ((y1[3] < y2[4]) && (y1[4] < y2[3]))
    {
        if (y1[3] > y1[4])
            y1[4] = y1[3];
        else
            y1[4] = y1[4];
        if (y2[3] < y2[4])
            y2[4] = y2[3];
        else
            y2[4] = y2[4];
    }
    else
    {
        y1[4] = 0;
        y2[4] = 0;
    }

    if ((x1[3] < x2[1]) && (x1[1] < x2[3]))
    {
        if (x1[3] > x1[1])
            x1[6] = x1[3];
        else
            x1[6] = x1[1];
        if (x2[3] < x2[1])
            x2[6] = x2[3];
        else
            x2[6] = x2[1];
    }
    else
    {
        x1[6] = 0;
        x2[6] = 0;
    }
    if ((y1[3] < y2[1]) && (y1[1] < y2[3]))
    {
        if (y1[3] > y1[1])
            y1[6] = y1[3];
        else
            y1[6] = y1[1];
        if (y2[3] < y2[1])
            y2[6] = y2[3];
        else
            y2[6] = y2[1];
    }
    else
    {
        y1[6] = 0;
        y2[6] = 0;
    }

    if ((x1[3] < x2[2]) && (x1[2] < x2[3]))
    {
        if (x1[3] > x1[2])
            x1[7] = x1[3];
        else
            x1[7] = x1[2];
        if (x2[3] < x2[2])
            x2[7] = x2[3];
        else
            x2[7] = x2[2];
    }
    else
    {
        x1[7] = 0;
        x2[7] = 0;
    }
    if ((y1[3] < y2[2]) && (y1[2] < y2[3]))
    {
        if (y1[3] > y1[2])
            y1[7] = y1[3];
        else
            y1[7] = y1[2];
        if (y2[3] < y2[2])
            y2[7] = y2[3];
        else
            y2[7] = y2[2];
    }
    else
    {
        y1[7] = 0;
        y2[7] = 0;
    }

    a += (x2[4] - x1[4]) * (y2[4] - y1[4]);
    p += 2 * ((x2[4] - x1[4]) + (y2[4] - y1[4]));
    a += (x2[1] - x1[1]) * (y2[1] - y1[1]);
    p += 2 * ((x2[1] - x1[1]) + (y2[1] - y1[1]));
    a += (x2[2] - x1[2]) * (y2[2] - y1[2]);
    p += 2 * ((x2[2] - x1[2]) + (y2[2] - y1[2]));
    a += (x2[3] - x1[3]) * (y2[3] - y1[3]);
    p += 2 * ((x2[3] - x1[3]) + (y2[3] - y1[3]));
    a -= (x2[5] - x1[5]) * (y2[5] - y1[5]);
    p -= 2 * ((x2[5] - x1[5]) + (y2[5] - y1[5]));
    a -= (x2[6] - x1[6]) * (y2[6] - y1[6]);
    p -= 2 * ((x2[6] - x1[6]) + (y2[6] - y1[6]));
    a -= (x2[7] - x1[7]) * (y2[7] - y1[7]);
    p -= 2 * ((x2[7] - x1[7]) + (y2[7] - y1[7]));

    out << a << ' ' << p << '\n';

    return 0;
}